Можно ли взять определенное количество строк из определенного значения столбца, аналогично циклу foreach в Java?

Есть ли способ получить поведение в kusto, похожее на цикл foreach в Java? Например, скажем, у меня есть отдельный список служб AF, затем для этого отдельного списка я хочу взять N строк для каждого отдельного значения столбца, есть ли способ сделать это в одном запросе?

Я пробовал несколько способов присоединения, но не смог заставить это работать динамично. Под динамическим я подразумеваю то, что я не хочу писать разные запросы, которые определяют | where service = 'A' | take 30,

ServiceLogs
| where isnotempty( service)
| distinct service
| join kind = rightouter ServiceLogs on $left.service== $right.service
| take 30

Фактические результаты таковы, что он возвращает только 30 для одного значения в отдельном списке, а не для каждого

1 ответ

Решение

Пока нет foreach Оператор, как правило, есть способы достижения цели, используя различные функции / операторы в языке.

В этом конкретном случае это может быть top-nested ( https://docs.microsoft.com/en-us/azure/kusto/query/topnestedoperator) поможет, или, возможно, partition оператор ( https://docs.microsoft.com/en-us/azure/kusto/query/partitionoperator), в зависимости от количества различных значений для service:

datatable(s:string, i:int, c:string)
[
    "a", 1, "not me",
    "b", 2, "not me",
    "c", 3, "not me",
    "d", 4, "not me",
    "a", 5, "me",
    "b", 6, "me too",
    "c", 7, "not three",
    "d", 8, "and me",
    "a", 9, "and me too",
    "b", 10, "count me in",
    "c", 11, "i",
    "d", 12, "myself",
]
| partition by s
(
    top 2 by i desc
)
Другие вопросы по тегам