Выбор подзапроса Kusto с использованием toscalar - возвращает только последнюю соответствующую запись

Я имею в виду sqlcheatsheet - Вложенные запросы

Запрос 1:

traces
    | where customDimensions.Domain == "someDomain"
    | where message contains "some-text" 
    | project itemId=substring(itemId,indexof(itemId,"-"),strlen(itemId))

Результат:

Itemid

-c580-11e9-888a-8776d3f65945
-c580-11e9-888a-8776d3f65945
-c580-11e9-9b01-c3be0f4a2bf2

Запрос 2:

traces
    | where customDimensions.Domain == "someDomain"
    | where itemId has toscalar(
    traces
        | where customDimensions.Domain == "someDomain"
        | where message contains "some-text"  
        | project itemId=substring(itemId,indexof(itemId,"-"),strlen(itemId)))

Результат для второго запроса возвращает записи, соответствующие только последней записи подзапроса

то есть:) > -c580-11e9-9b01-c3be0f4a2bf2

Вопрос:

Как получить весь набор результатов, который соответствует всем трем элементам.

Мое требование - взять всю последовательность логов для конкретного запроса.

Чтобы получить, что у меня есть входы ниже, я мог бы взять один журнал, из которого я могу найти ItemId

ItemId выглядит как "b5066283-c7ea-11e9-9e9b-2ff40863cba4", Остальные журналы, относящиеся к этому запросу, должны иметь "-c7ea-11e9-9e9b-2ff40863cba4" это значение. Только первая часть будет увеличена как b5066284, b5066285, b5066286 как это.

1 ответ

toscalar(), как следует из его имени, возвращает скалярное значение.

Учитывая табличный аргумент с N столбцы и M в строках будет возвращено значение в 1-м столбце и 1-й строке.

Например: следующее вернет одно значение - 1

let T = datatable(a:int, b:int, c:int)
[
    1,2,3,
    4,5,6,
    7,8,9,
]
;
print toscalar(T)

Если я правильно понял цель вашего второго запроса, вы сможете выполнить свое требование, используя has_any,

Например:

let T = datatable(item_id:string)
[
    "c580-11e9-888a-8776d3f65945",
    "c580-11e9-888a-8776d3f65945",
    "c580-11e9-9b01-c3be0f4a2bf2",
]
;
T
| where item_id has_any (
    (
        T
        | parse item_id  with * "-" item_id
    )
)
Другие вопросы по тегам