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


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

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

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

Примечание.

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

Устаревшие псевдонимы: argmax()

Синтаксис

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

Дополнительные сведения о соглашениях синтаксиса.

Параметры

Имя (название) Type Обязательно Описание
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
TEXAS 36.4607 DARROUZETT
... ... ...

Найдите последнее событие с прямой смертью в каждом состоянии, где отображаются все столбцы.

Запрос сначала фильтрует события, чтобы включить только те, где была по крайней мере одна прямая смерть. Затем запрос возвращает всю строку с последними значениями StartTime.

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

В таблице результатов отображаются только первые 10 строк и первые 3 столбца.

Штат Время начала 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 ...
DELAWARE 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

Выходные данные

Фрукт Версия Color
Apple 1 Красный
Банан Желтый
Груша 2 Зеленый

Сравнение с max()

Функция arg_max() отличается от функции max(). Функция arg_max() позволяет возвращать дополнительные столбцы вместе с максимальным значением, а max() возвращает только максимальное значение.

Примеры

arg_max()

Найдите последнее событие с прямой смертью, отображая все столбцы в таблице.

Запрос сначала фильтрует события, чтобы включить только те, где была по крайней мере одна прямая смерть. Затем запрос возвращает всю строку с самым последним (максимумом) StartTime.

StormEvents
| where DeathsDirect > 0
| summarize arg_max(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