Можно ли взять определенное количество строк из определенного значения столбца, аналогично циклу foreach в Java? - PullRequest
0 голосов
/ 23 мая 2019

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

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

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

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

1 Ответ

1 голос
/ 23 мая 2019

, хотя нет оператора 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
)
...