arg_max()(聚合函数)

适用于:✅Azure 数据资源管理器Azure MonitorMicrosoft Sentinel

在表中查找使指定表达式最大化的行。 它返回输入表的所有列或指定的列。

备注

此函数与 summarize 运算符结合使用。

弃用的别名:argmax()

语法

arg_max (ExprToMaximize,*ExprToReturn [ | ...],)

详细了解语法约定

参数

客户 类型​​ 必需 说明
ExprToMaximize string ✔️ 确定最大值的表达式。
ExprToReturn string ✔️ 表达式确定从具有 ExprToMaximize 最大值的行中返回哪些列的值。 使用通配符 * 返回所有列。

返回

返回表中最大化指定表达式 ExprToMaximize 的行以及 ExprToReturn 中指定的列的值。

提示

若要仅查看最大值,请使用 max() 函数

示例

查找最大纬度

以下示例查找每个状态下风暴事件的最大纬度。

StormEvents 
| summarize arg_max(BeginLat, BeginLocation) by State

输出

结果表仅显示前 10 行。

状态 BeginLat BeginLocation
密西西比州 34.97 巴顿
佛蒙特州 45 北特洛伊
美属萨摩亚 -14.2 OFU
夏威夷 22.2113 普林斯维尔
明尼苏达州 49.35 ARNESEN
罗得岛州 42 WOONSOCKET
印第安纳州 41.73 弗里蒙特
西弗吉尼亚州 40.62 切斯特
南卡罗来纳州 35.18 LANDRUM
德克萨斯 36.4607 DARROUZETT
... ... ...

查找最后一个状态致命事件

以下示例查找每个状态中发生直接死亡事件的最后一次,并显示所有列。

查询首先筛选事件,以仅包含至少一个直接死亡的事件。 然后,查询将返回包含最新 StartTime的整行。

StormEvents
| where DeathsDirect > 0
| summarize arg_max(StartTime, *) by State

输出

结果表仅显示前 10 行和前三列。

状态 开始时间 结束时间 ...
关岛 2007-01-27T11:15:00Z 2007-01-27T11:30:00Z ...
麻萨诸塞州 2007-02-03T22:00:00Z 2007-02-04T10:00:00Z ...
美属萨摩亚 2007-02-17T13:00:00Z 2007-02-18T11:00:00Z ...
爱达荷州 2007-02-17T13:00:00Z 2007-02-17T15:00:00Z ...
特拉华州 2007-02-25T13:00:00Z 2007-02-26T01:00:00Z ...
怀俄明州 2007-03-10T17:00:00Z 2007-03-10T17:00:00Z ...
新墨西哥州 2007-03-23T18:42:00Z 2007-03-23T19:06:00Z ...
印第安纳州 2007-05-15T14:14:00Z 2007-05-15T14:14:00Z ...
蒙大拿州 2007-05-18T14:20:00Z 2007-05-18T14:20:00Z ...
密歇根湖 2007-06-07T13:00:00Z 2007-06-07T13:00:00Z ...
... ... ... ...

处理 null

以下示例演示了 null 处理。

datatable(Fruit: string, Color: string, Version: int) [
    "Apple", "Red", 1,
    "Apple", "Green", int(null),
    "Banana", "Yellow", int(null),
    "Banana", "Green", int(null),
    "Pear", "Brown", 1,
    "Pear", "Green", 2,
]
| summarize arg_max(Version, *) by Fruit

输出

水果 版本 颜色
苹果 1 红色
香蕉 黄色
2 绿色

与 max() 的比较

arg_max() 函数与 max() 函数不同。 arg_max() 函数允许返回其他列以及最大值,max() 仅返回最大值本身。

示例

arg_max()

查找上次发生直接死亡事件的时间,显示表中的所有列。

查询首先筛选事件,以仅包含至少有一个直接死亡的事件。 然后查询返回具有最近(最大)StartTime 的整行。

StormEvents
| where DeathsDirect > 0
| summarize arg_max(StartTime, *)

结果表返回包含指定表达式中最高值的行的所有列。

开始时间 结束时间 EpisodeId EventId 状态 事件类型 ...
2007-12-31T15:00:00Z 2007-12-31T15:00:00 12688 69700 犹他州 雪崩 ...

max()

查找上次发生直接死亡事件的时间。

查询将事件筛选为仅包含至少一个直接死亡的事件,然后返回 StartTime 的最大值。

StormEvents
| where DeathsDirect > 0
| summarize max(StartTime)

结果表返回 StartTime 的最大值,而不返回此记录的其他列。

max_StartTime
2007-12-31T15:00:00Z