你当前正在访问 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 BARTON
VERMONT 45 NORTH TROY
AMERICAN SAMOA -14.2 OFU
HAWAII 22.2113 PRINCEVILLE
MINNESOTA 49.35 ARNESEN
RHODE ISLAND 42 WOONSOCKET
INDIANA 41.73 FREMONT
西弗吉尼亚州 40.62 CHESTER
SOUTH CAROLINA 35.18 LANDRUM
德克萨斯 36.4607 DARROUZETT
... ... ...

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

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

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

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

状态 StartTime EndTime ...
GUAM 2007-01-27T11:15:00Z 2007-01-27T11:30:00Z ...
MASSACHUSETTS 2007-02-03T22:00:00Z 2007-02-04T10:00:00Z ...
AMERICAN SAMOA 2007-02-17T13:00:00Z 2007-02-18T11:00:00Z ...
爱达荷州 2007-02-17T13:00:00Z 2007-02-17T15:00:00Z ...
DELAWARE 2007-02-25T13:00:00Z 2007-02-26T01:00:00Z ...
怀俄明州 2007-03-10T17:00:00Z 2007-03-10T17:00:00Z ...
NEW MEXICO 2007-03-23T18:42:00Z 2007-03-23T19:06:00Z ...
INDIANA 2007-05-15T14:14:00Z 2007-05-15T14:14:00Z ...
MONTANA 2007-05-18T14:20:00Z 2007-05-18T14:20:00Z ...
LAKE MICHIGAN 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

输出

水果 版本 Color
Apple 1 Red
香蕉 黄色
2 绿色

与 max()

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

示例

arg_max()

查找发生直接死亡事件的最后一次,显示表中的所有列。

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

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

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

StartTime EndTime EpisodeId EventId 状态 EventType ...
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