共用方式為


arg_max() (聚合函數)

適用於:✅Microsoft網狀架構✅✅✅

在數據表中尋找最大化指定表達式的數據列。 它會傳回輸入數據表或指定數據行的所有數據行。

注意

此函式會與 summarize 運算子搭配使用。

已被取代的別名: argmax()

語法

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

深入瞭解 語法慣例

參數

姓名 類型​​ 必要 描述
ExprToMaximize string ✔️ 決定最大值的表達式。
ExprToReturn string ✔️ 表達式會從具有exprToMaximize最大值的數據列,決定傳回哪些數據行的值。 使用通配符 * 傳回所有數據行。

傳回

傳回數據表中的數據列,將指定的表達式最大化 ExprToMaximize,以及 exprToReturn中所指定 數據行的值。

提示

若要檢視最大值,請使用 max() 函式

範例

尋找每個狀態中 Storm 事件的最大緯度。

StormEvents 
| summarize arg_max(BeginLat, BeginLocation) by State

結果數據表只會顯示前10個數據列。

州/省 BeginLat BeginLocation
密西西比州 34.97 巴頓
佛蒙特州 45 北特洛伊
美屬薩摩亞 -14.2 OFU
夏威夷州 22.2113 普林斯維爾
明尼蘇達州 49.35 ARNESEN
羅德島 42 WOONSOCKET
INDIANA 41.73 FREMONT (費里蒙特)
西維吉尼亞州 40.62 切斯特
南卡羅來那州 35.18 LANDRUM
德克薩斯州 36.4607 DARROUZETT
... ... ...

尋找每個狀態中發生直接死亡事件的最後一次,並顯示所有數據行。

查詢會先篩選事件,只包含至少有一個直接死亡的事件。 然後,查詢會傳回包含最近 StartTime 的整個數據列。

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

結果數據表只會顯示前10個數據列和前3個數據行。

州/省 StartTime EndTime ...
關島 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 ...
INDIANA 2007-05-15T14:14:00Z 2007-05-15T14:14:00Z ...
MONTANA 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

輸出

水果 版本 Color
Apple 1 紅色
香蕉 黃色
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