Sdílet prostřednictvím


MAX (Azure Stream Analytics)

Vrátí maximální hodnotu ve výrazu.

Syntaxe

-- Aggregate Function Syntax
MAX ( expression )

-- Analytic Function Syntax
MAX ( expression ) OVER ([<PARTITION BY clause>] <LIMIT DURATION clause> [<WHEN clause>])

Argumenty

expression

Je konstanta, název sloupce nebo funkce a libovolná kombinace aritmetických operátorů. Agregační funkce a poddotaz nejsou povoleny.

Max se dá použít se sloupci Bit, Bigint, Datetime a Float.

Max lze použít také s NVARCHAR(MAX) s následujícím chováním:

  • Pokud sloupec nebyl explicitně přetypován na NVARCHAR(MAX), pokusí se ho MAX implicitně přetypovat na FLOAT. Neshody typů budou mít za následek chyby.
  • Pokud byl sloupec explicitně přetypován na NVARCHAR(MAX) pomocí cast nebo TRY_CAST, vrátí se maximální hodnota řetězce.

OVER ([<PARTITION BY klauzule><LIMIT DURATION klauzule> [<WHEN klauzule>]]

Určuje skupinu řádků, na které se používá hodnota MAX. Klauzule PARTITION BY určuje, že řádky se stejným klíčem oddílu budou seskupené dohromady. Klauzule LIMIT DURATION určuje, kolik historie je součástí skupiny. Klauzule WHEN určuje logickou podmínku pro zahrnutí řádků do skupiny. Další podrobnosti o využití najdete v klauzuli OVER .

Návratové typy

Vrátí stejnou hodnotu jako výraz.

Příklady

Pomocí agregační syntaxe snížíme počet řádků. Tady vybereme maximální jízdné za každou hodinu:

SELECT
  TollId,
  System.Timestamp() AS WindowEnd,
  MAX(Toll) AS MaxFare
FROM Input TIMESTAMP BY EntryTime
GROUP BY
  TollId,
  TumblingWindow(hour,1)

Díky analytické syntaxi udržujeme vstupní kardinalitu. Tady pro každé vozidlo procházející mýtem porovnáme aktuální jízdné s maximem za poslední hodinu:

SELECT
  TollId,
  System.Timestamp() AS PassageTime,
  LicensePlate,
  Toll AS Fare,
  MAX (Toll) OVER (PARTITION BY VehicleClass LIMIT DURATION(hour,1)) AS MaximumFareOverLastHour
FROM Input TIMESTAMP BY EntryTime

Viz také