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