kusto - coalesce 和 next - 为什么不对所有内容都使用 next?

kusto - coalesce and next - why not just use next for everything?

我在 azure kusto 在线查询终端运行有以下两个查询

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

在您提供的场景中,答案是肯定的:您可以从 第二个查询 中删除 coalesce,只需使用 next 运算符如下所示的默认值(对于第二个查询):

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。这是[=13=的场景] 运算符无法覆盖。