Функция ранжирования в Кусто
введите описание изображения здесь, у меня есть данные ниже в таблице Kusto . ( Run_Date datetime и строка датчика - это два столбца в таблице)
У меня есть требование добавить столбец автоинкремента таким образом, чтобы при изменении значения даты выполнения или датчика значение столбца увеличивалось на единицу.
См. Приложенный снимок экрана. Я пробовал использовать функцию Rank и Rownumber в kusto, но мне не повезло.
2 ответа
вы могли бы использовать
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);
)
Другой альтернативой является использование 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