所以我使用PowerBI Desktop直接从OMS Log分析查询数据,我相信查询返回的数据有8MB硬限制。我遇到的问题是我需要查询大约30 000行,但是大约18 000行达到了8MB的限制。有可能打破查询,例如,query1将返回行1 - 18 000,query2将返回18 001 - 28 000等等,然后我可以合并PowerBI中的查询以给我一个所有数据的视图?
问题是我在这个领域的经验,特别是DAX是非常有限的,所以我不知道如何在高级编辑器中指定它。任何帮助都将受到高度赞赏。
谢谢!
答案 0 :(得分:1)
同一期。解决了。
我的需要: 我在Azure LogAnalytics(LA)中有一个表,该表每天大约累积35,000行。我需要将LA中的所有行放入PowerBi中进行分析。
我的问题: 我在LA Logs Web UX中设计了所需的KQL查询。然后,我选择了“导出->导出到PowerBI M查询”功能。将其粘贴到PowerBi中的BLANK查询中。已授权。我注意到了一些奇怪的行为:
1)-就像您说的那样,我正在滚动获取约35K的数据行,每个查询会比我的KQL范围内的第一个日期少一点点。
2)-另外,我发现每天查询都会随机地删掉一些行-就像是在“猜测”我不需要将哪些数据放入限制内。
3)-不管我写的是什么KQL | TimeGenerated> = ago(xd)子句,我显然都不会获得超过它的限制。
我的解决方案-效果很好。 在PowerQuery中,我在PowerQuery / M中创建了一个新的空白表(不是DAX表!)。在该表中,我使用DateTimeZone.UtcNow()从今天的日期开始,然后添加了一个名为[Days Back]的列,并为-1,-2,-3 ...- 7添加了行。然后,用一些M,我又加上了一个列,从Days Back中减去Today,给了我日期的历史。。
现在,我有了一个表,可以从中循环访问历史记录中的每个日期,并将| 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