0

我在 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() 已经提供了我可以在这种情况下应用的默认值?

4

1 回答 1

1

在您提供的场景中,答案是肯定的:您可以coalesce2nd query中删除,并且只需使用next具有如下默认值的运算符(对于 2nd query):

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算子无法覆盖的场景。

于 2019-11-14T06:18:35.343 回答