你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

arg_max()(聚合函数)

适用于:✅Azure 数据资源管理器Azure Monitor✅ 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 处理。

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 绿色

比较 arg_max() 和 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