この問題は、無効なエスケープシーケンス(¥^および¥〜)を含む検索語句のクエリによって発生し、JSONパーサーが失敗する原因となります。
これはPower BIコンテンツパックの制限事項です。
- がクエリ
- JSONブロブ自体
から問題のある文字を削除を送信する前に、クエリ
- バックスラッシュ(\)をエスケープを送信する前にバックスラッシュを削除します。オプションは以下の通りです、それ動作させるために
これらのオプションが機能しない場合、Power BIコンテンツパックを使用することはできませんが、Power BIデスクトップでデータを分析することはできます。以下は、JSONパーサーのエラー処理を追加するクエリです。
let Source = AzureStorage.Blobs("https://ACCOUNTNAME.blob.core.windows.net"),
#"insights-logs-operationlogs" = Source{[Name="insights-logs-operationlogs"]}[Data],
#"Sorted Rows" = Table.Sort(#"insights-logs-operationlogs",{{"Date modified", Order.Descending}}),
#"Filtered Rows" = Table.SelectRows(#"Sorted Rows", each Date.IsInPreviousNDays([Date modified], DAYS) or DateTime.Date([Date modified]) = DateTime.Date(DateTimeZone.UtcNow())),
#"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Name", "Extension", "Date accessed", "Date modified", "Date created", "Attributes", "Folder Path"}),
#"Parsed JSON" = Table.TransformColumns(#"Removed Columns",{},Json.Document),
#"Replaced Errors1" = Table.ReplaceErrorValues(#"Parsed JSON", {{"Content", ""}}),
#"Filtered Rows1" = Table.SelectRows(#"Replaced Errors1", each [Content] <> null and [Content] <> ""),
#"Expanded Content" = Table.ExpandRecordColumn(#"Filtered Rows1", "Content", {"records"}, {"records"}),
#"Expanded records" = Table.ExpandListColumn(#"Expanded Content", "records"),
#"Expanded records1" = Table.ExpandRecordColumn(#"Expanded records", "records", {"time", "resourceId", "operationName", "operationVersion", "category", "resultType", "resultSignature", "durationMS", "properties"}, {"time", "resourceId", "operationName", "operationVersion", "category", "resultType", "resultSignature", "durationMS", "properties"}),
#"Expanded properties" = Table.ExpandRecordColumn(#"Expanded records1", "properties", {"Description", "Query", "IndexName", "Documents"}, {"Description", "Query", "IndexName", "Documents"}),
#"Renamed Columns" = Table.RenameColumns(#"Expanded properties",{{"time", "Datetime"}, {"resourceId", "ResourceId"}, {"operationName", "OperationName"}, {"operationVersion", "OperationVersion"}, {"category", "Category"}, {"resultType", "ResultType"}, {"resultSignature", "ResultSignature"}, {"durationMS", "Duration"}}),
#"Added Custom2" = Table.AddColumn(#"Renamed Columns", "QueryParameters", each Uri.Parts("http://tmp" & [Query])),
#"Expanded QueryParameters" = Table.ExpandRecordColumn(#"Added Custom2", "QueryParameters", {"Query"}, {"Query.1"}),
#"Expanded Query.1" = Table.ExpandRecordColumn(#"Expanded QueryParameters", "Query.1", {"search", "$skip", "$top", "$count", "api-version", "searchMode", "$filter"}, {"search", "$skip", "$top", "$count", "api-version", "searchMode", "$filter"}),
#"Removed Columns1" = Table.RemoveColumns(#"Expanded Query.1",{"OperationVersion"}),
#"Changed Type" = Table.TransformColumnTypes(#"Removed Columns1",{{"Datetime", type datetimezone}, {"ResourceId", type text}, {"OperationName", type text}, {"Category", type text}, {"ResultType", type text}, {"ResultSignature", type text}, {"Duration", Int64.Type}, {"Description", type text}, {"Query", type text}, {"IndexName", type text}, {"Documents", Int64.Type}, {"search", type text}, {"$skip", Int64.Type}, {"$top", Int64.Type}, {"$count", type logical}, {"api-version", type text}, {"searchMode", type text}, {"$filter", type text}}),
#"Inserted Date" = Table.AddColumn(#"Changed Type", "Date", each DateTime.Date([Datetime]), type date),
#"Duplicated Column" = Table.DuplicateColumn(#"Inserted Date", "ResourceId", "Copy of ResourceId"),
#"Split Column by Delimiter" = Table.SplitColumn(#"Duplicated Column","Copy of ResourceId",Splitter.SplitTextByEachDelimiter({"/"}, null, true),{"Copy of ResourceId.1", "Copy of ResourceId.2"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Copy of ResourceId.1", type text}, {"Copy of ResourceId.2", type text}}),
#"Removed Columns2" = Table.RemoveColumns(#"Changed Type1",{"Copy of ResourceId.1"}),
#"Renamed Columns1" = Table.RenameColumns(#"Removed Columns2",{{"Copy of ResourceId.2", "ServiceName"}}),
#"Lowercased Text" = Table.TransformColumns(#"Renamed Columns1",{{"ServiceName", Text.Lower}}),
#"Added Custom" = Table.AddColumn(#"Lowercased Text", "DaysFromToday", each Duration.Days(DateTimeZone.UtcNow() - [Datetime])),
#"Changed Type2" = Table.TransformColumnTypes(#"Added Custom",{{"DaysFromToday", Int64.Type}}),
#"Replaced Errors" = Table.ReplaceErrorValues(#"Changed Type2", {{"search", null}, {"$skip", null}, {"$top", null}, {"$count", null}, {"api-version", null}, {"searchMode", null}, {"$filter", null}}),
#"Filtered Rows2" = Table.SelectRows(#"Replaced Errors", each true)
in
#"Filtered Rows2"
の日数
淡色のストレージに生データが表示されますか?ダッシュボードにフィルタをアクティブにしていますか? – Berni
できます。これは、私の生の日付が "m = 10"フォルダ(私は10月だと思います)のstirageアカウントフォルダのように見えます。ブロブで –
できます。これは、私の生の日付がブロブの「m = 10」フォルダ(私は10月だと思う)のストレージアカウントのフォルダのように見えます https://tohomestorage.blob.core.windows.net/images/4.jpg さらに、他のレポートにはデータがあります。私は9月28日から "時間をかけて検索クエリ"の統計を見ることができます - その日、私はデータを収集し始めます。 9月28日以降のフィルタオプションを選択しても、「時間の経過に関する情報の検索」レポート –