我有一个类似以下的查询(data taken from tutorial)
SELECT State, EventType, DamageProperty From StormEvents where DamageProperty >= ALL(select DamageProperty from StormEvents where State = 'NEW YORK') AND EventType = 'Wildfire'
我想将此查询转换为KQL,但在转换ALL运算符时遇到了麻烦。
以下查询将收到相同的结果:
StormEvents | where (DamageProperty >= toscalar( StormEvents | where State == "NEW YORK" | summarize max(DamageProperty) ) and EventType == "Wildfire") | distinct State, EventType, DamageProperty | limit 1000
但是我不想使用
max()
,我想将来使用时知道如何使用any / all运算符(而且某种程度上我没有在Google上找到相关的东西)。 最佳答案
我不认识库斯托但是以下SQL是等效的:
select se.State, se.EventType, se.DamageProperty
from StormEvents se
where se.DamageProperty >= (select max(se2.DamageProperty)
from StormEvents se2
where se2.State = 'NEW YORK'
) and
se.EventType = 'Wildfire';
我也感到奇怪的是,您仅在外部查询中对事件类型进行过滤。我希望子查询中也有相同的过滤器。
注意:如果子查询中没有匹配的行,则此版本与您的查询之间会有区别。您可以稍作调整来处理此问题:
where se.DamageProperty >= (select coalesce(max(se2.DamageProperty), se.DamageProperty)
from . . .