Поделиться через


arg_max() (агрегатная функция)

Область применения: ✅Microsoft Fabric

Находит строку в таблице, которая максимизирует указанное выражение. Он возвращает все столбцы входной таблицы или указанные столбцы.

Примечание.

Эта функция используется в сочетании с оператором сводки.

Устаревшие псевдонимы: 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
RHODE ISLAND 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