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
оператор не может покрыть.