在此处输入图像描述我在 Kusto 表中有以下数据。(Run_Date 日期时间和传感器字符串是表中的两列)
我需要以这样的方式添加自动增量列,如果运行日期或传感器值发生更改,列应该增加一。
请参考随附的截图。我已经尝试在 kusto 中使用 Rank 和 Rownumber 函数,但对我来说没有运气。
在此处输入图像描述我在 Kusto 表中有以下数据。(Run_Date 日期时间和传感器字符串是表中的两列)
我需要以这样的方式添加自动增量列,如果运行日期或传感器值发生更改,列应该增加一。
请参考随附的截图。我已经尝试在 kusto 中使用 Rank 和 Rownumber 函数,但对我来说没有运气。
您可以使用scan
运算符:https ://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/scan-operator
datatable(run_date:datetime, sensor:string)
[
datetime(2021-08-05), "A",
datetime(2021-08-05), "A",
datetime(2021-08-05), "A",
datetime(2021-08-05), "B",
datetime(2021-08-05), "B",
datetime(2021-09-05), "B",
]
| order by run_date asc
| scan declare (_rank: long = 0) with
(
step s1: true => _rank = iff(run_date > s1.run_date or sensor != s1.sensor, s1._rank + 1, s1._rank);
)
运行日期 | 传感器 | _秩 |
---|---|---|
2021-08-05 00:00:00.0000000 | 一个 | 1 |
2021-08-05 00:00:00.0000000 | 一个 | 1 |
2021-08-05 00:00:00.0000000 | 一个 | 1 |
2021-08-05 00:00:00.0000000 | 乙 | 2 |
2021-08-05 00:00:00.0000000 | 乙 | 2 |
2021-09-05 00:00:00.0000000 | 乙 | 3 |
另一种选择是使用row_rank()函数
datatable(run_date:datetime, sensor:string)
[
datetime(2021-08-05), "A",
datetime(2021-08-05), "A",
datetime(2021-08-05), "A",
datetime(2021-08-05), "B",
datetime(2021-08-05), "B",
datetime(2021-09-05), "B",
]
| extend Day = bin(run_date, 1d)
| extend RankColumn = strcat(Day, sensor)
| order by RankColumn asc
| extend Rownumber = row_rank(RankColumn)
| project-away RankColumn, Day