Dal*_*šić 2 kql azure-data-explorer
解释我想要完成的事情的最简单方法是用这个例子:
let data = datatable(id:int, b:string, c:string, dateTime:datetime)
[
1,"","c one","2021-03-03",
2,"b one","","2021-03-04",
3,"","c two","2021-03-05"
];
Run Code Online (Sandbox Code Playgroud)
如您所见,每行都存在id和date值。b和c列的值是可选的。目标是在一行中获取每列的最新值(当该值不为空时)。结果应如下所示:
3, "b one", "c two", "2021-03-05"
在实际场景中,有更多的列,我想知道是否可以以简单的方式完成它,而无需编写太多查询。
小智 6
假设数据有您定义的顺序 - 您可以使用 arg_max() 聚合: https ://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/arg-max-aggfunction
let data = datatable(id:int, b:string, c:string, dateTime:datetime)
[
1,"","c one","2021-03-03",
2,"b one","","2021-03-04",
3,"","c two","2021-03-05"
];
['data']
| serialize n = row_number()
| summarize arg_max(iif(isnotnull(id), n, -1), id),
arg_max(iif(isnotempty(b), n, -1), b),
arg_max(iif(isnotempty(c), n, -1), c),
arg_max(iif(isnotnull(dateTime), n, -1), dateTime)
| project-away max_*
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2694 次 |
| 最近记录: |