Кусто резюмируйте, где между?

У меня есть серия журналов, которые я группирую на основе определенных шагов (на основе данных в строке)

Один шаг потенциально может быть повторен несколько раз после официального завершения последовательности (шаг 4), я бы хотел отклонить их из инструкции summarize.

В таблице ниже первая группа должна находиться между строками 1 и 6, вторая группа должна находиться между строками 9 и 14. Я бы суммировал их по группам, но я хочу отклонить записи, которые появляются после шага 4 для каждой последовательности.

пример данных

Обратите внимание, что я не могу использовать min/max для процентов на шаге 3, так как это даст мне значения, которые появляются после шага 4 для некоторых группировок.

2 ответа

Похоже, для этого уже есть отличный оператор! Спасибо одному из моих коллег за указание на это.

scan Оператор

https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/scan-operator

      | scan with_match_id=m_id with 
(
    step s1: step== "1";
    step s2: step!= "4" and  timestamp - s1.timestamp <= 5m;
    step s3: step== "4"  and timestamp - s1.timestamp <= 5m;
)

Лучше всего отфильтровать ненужные записи до summarize, нравится:

      ...
| where step != 4
| summarize ... by group

Также обратите внимание, что существуют различные ***if функции агрегирования, и вы можете использовать их так:

      ...
| summarize minif(timestamp, step != 4), maxif(timestamp, step != 4), ... by group

Вы можете увидеть все функции агрегации здесь, и вы можете искать if( чтобы увидеть все функции агрегирования, которые принимают предикат.

Другие вопросы по тегам