我有一个类似以下的查询(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 . . .

10-05 19:30