【发布时间】:2022-08-18 19:21:36
【问题描述】:
如何根据列的字符串数组动态构造汇总语句?
deviceTelemetry
| summarize <FOR-EACH-COLUMNS>avg(column)<FOR-EACH-COLUMNS> by deviceId
编辑
这是一个数据集,\"keys\" 包含我想在汇总聚合中使用的列名,\"deviceTelemetry\" 是预期结果(在这种情况下,列是硬编码的)。
let deviceTelemetry = datatable (deviceId:guid, timestamp:datetime, value:dynamic)[
\'fddf1cec-16db-4461-9057-3d08e46b6bcf\',\'2020-05-15 17:01:35.7750000\', dynamic({ \"level\": 60}),
\'fddf1cec-16db-4461-9057-3d08e46b6bcf\',\'2020-05-15 18:01:35.7750000\', dynamic({ \"level\": 50}),
\'aaaaaaaa-fed4-c23b-422b-e85e0877c092\',\'2020-05-15 17:01:35.7750000\', dynamic({ \"level\": 100, \"flow\": 350}),
\'aaaaaaaa-fed4-c23b-422b-e85e0877c092\',\'2020-05-15 18:01:35.7750000\', dynamic({ \"level\": 90, \"flow\": 360}),
\'aaaaaaaa-fed4-c23b-422b-e85e0877c092\',\'2020-05-15 19:01:35.7750000\', dynamic({ \"level\": 80, \"flow\": 370}),
\'aaaaaaaa-fed4-c23b-422b-e85e0877c092\',\'2020-05-15 20:01:35.7750000\', dynamic({ \"level\": 70, \"flow\": 380}),
\'cb04ccff-48bc-4108-9d16-7d7db9152895\',\'2020-05-15 21:01:35.7750000\', dynamic({ \"pressure\": 120}),
\'cb04ccff-48bc-4108-9d16-7d7db9152895\',\'2020-05-15 20:01:35.7750000\', dynamic({ \"pressure\": 130}),
\'cb04ccff-48bc-4108-9d16-7d7db9152895\',\'2020-05-15 21:01:35.7750000\', dynamic({ \"pressure\": 140}),
];
let keys = deviceTelemetry
| summarize make_bag(value)
| extend keys=bag_keys(bag_value)
| mv-expand keys
| distinct tostring(keys);
keys;
let flowColumnName = \"flow\";
let levelColumnName = \"level\";
let pressureColumnName = \"pressure\";
deviceTelemetry
| evaluate bag_unpack(value)
| summarize
level=avg(toreal(column_ifexists(levelColumnName, levelColumnName))),
flow=avg(toreal(column_ifexists(flowColumnName, flowColumnName))),
pressure=avg(toreal(column_ifexists(pressureColumnName, pressureColumnName)))
by timestamp=bin(timestamp , 1d) , deviceId
-
请添加数据样本,最好作为数据表