kusto - coalesce и next - почему бы просто не использовать next для всего?

У меня есть два следующих запроса, которые я выполняю на терминале онлайн-запросов azure kusto.

(доступно по этой ссылке - https://dataexplorer.azure.com/clusters/help/databases/Samples)

//okay this is lag related code.
//but we need to serialize first in some way, in other words sort it
StormEvents
| order by StartTime | extend LaggedOutput = next( State,2,"NOTHING FOUND") | project State,LaggedOutput;
//lets try coalasce 
//next inside the coalesce returns a empty string and that is replaced with our replacement.
//note : I think we can forgo coalesce completely because next
//already has a default value.
StormEvents
| order by StartTime | project coalesce(next(State,2,""),"COALSESCE");

Итак, мой вопрос: зачем вообще беспокоиться о слиянии? next() уже предоставляет значение по умолчанию, которое я могу применить в этом сценарии?

1 ответ

Решение

В представленном вами сценарии ответ - да: вы можете удалить coalesceиз второго запроса и просто используйтеnext оператор со значением по умолчанию, как показано ниже (для 2-го запроса):

StormEvents
| order by StartTime 
| project next(State,2,"COALSESCE")

вывод такой же, как при использовании project coalesce(next(State,2,""),"COALSESCE").

Но для других сценариев, например, я хочу получить ненулевое значение из нескольких значений, пример, как показано ниже:

print result=coalesce(tolong("not a number"), tolong("42"), 33)

и здесь мы можем использовать только coalesceдля получения первого ненулевого значения => 42. Это сценарийnext оператор не может покрыть.

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