同样的问题。解决了。
我的需求:我在 Azure LogAnalytics (LA) 中有一个表,每天可累积约 35K 行。我需要将所有行从 LA 导入 PowerBi 进行分析。
我的问题:我在 LA Logs Web UX 中制作了我想要的 KQL 查询。然后我选择了“导出 -> 导出到 PowerBI M 查询”功能。将其粘贴到 PowerBi 中的空白查询中。授权。我注意到一些奇怪的行为:
1) - 就像你说的,我得到了大约 35K 行的滚动数据,每个查询都会从我的 KQL 范围内的第一个日期剪掉一点。
2) - 另外,我发现每天,查询都会有机会地剪掉一些行 - 就像它在“猜测”我不需要符合限制的数据一样。
3) - 无论我写了什么 KQL |where TimeGenerated >= ago(xd) 子句,我显然不会得到超过它限制我的回报。
我的解决方案——效果很好。在 PowerQuery 中,我在 PowerQuery/M 中创建了一个新的空白表(不是 DAX 表!)。在该表中,我使用 DateTimeZone.UtcNow() 从今天的日期开始,然后我添加了一个名为 [Days Back] 的列,并为 -1、-2、-3...-7 添加了行。然后,使用一些 M,我添加了另一个从 Days Back 中减去 Today 的列,给了我日期的历史记录。.
现在,我有一个表,我可以从中迭代历史中的每个 Date 并将 parm1 传递给我的 KQL 查询: | where TimeGeneratedDate == todatetime('"& Date.ToText(TimeGeneratedDateLoop) & "')
如您所见,在我编辑了我的主要 LA 查询以使用 TimeGeneratedDateLoop 作为参数后,我现在可以获得每天的记录量,而不会达到 LA 限制。请注意,就我而言,没有一天会超过 8MB 的限制。如果你这样做了,那么你可以用 12 小时的故障来解决这个问题,而不是一整天。
这是我对该函数的最终 M 查询:
注意:我还从预生成的查询中删除了这一行:"prefer"="ai.response-thinning=true"
<- 我不知道它是否有帮助,但将其设置为 false 不起作用。
let
FxDailyQuery = (TimeGeneratedDateLoop as date) =>
let
AnalyticsQuery =
let
Source = Json.Document(Web.Contents(
"https://api.loganalytics.io/v1/workspaces/xxxxx-202d-xxxx-a351-xxxxxxxxxxxx/query",
[
Query = [#"query"
= "YourLogAnalyticsTbl
| extend TimeGeneratedDate = bin(TimeGenerated, 1d)
| where notempty(Col1)
| where notempty(Col2)
| where TimeGenerated >= ago(30d)
| where TimeGeneratedDate == todatetime('"& Date.ToText(TimeGeneratedDateLoop) & "')
", #"x-ms-app" = "OmsAnalyticsPBI"],
Timeout = #duration(0, 0, 4, 0)
]
)),
TypeMap = #table({"AnalyticsTypes", "Type"}, {
{"string", Text.Type},
{"int", Int32.Type},
{"long", Int64.Type},
{"real", Double.Type},
{"timespan", Duration.Type},
{"datetime", DateTimeZone.Type},
{"bool", Logical.Type},
{"guid", Text.Type},
{"dynamic", Text.Type}
}),
DataTable = Source[tables]{0},
Columns = Table.FromRecords(DataTable[columns]),
ColumnsWithType = Table.Join(Columns, {"type"}, TypeMap, {"AnalyticsTypes"}),
Rows = Table.FromRows(DataTable[rows], Columns[name]),
Table = Table.TransformColumnTypes(Rows, Table.ToList(
ColumnsWithType,
(c) => {c{0}, c{3}}
))
in
Table
in
AnalyticsQuery
in
FxDailyQuery