Функция ранжирования в Кусто

введите описание изображения здесь, у меня есть данные ниже в таблице 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
Другие вопросы по тегам