aggregate Functie

Van toepassing op:gemarkeerd met ja Databricks SQL-controle gemarkeerd als ja Databricks Runtime

Voegt elementen in een matrix samen met behulp van een aangepaste aggregator. Deze functie is een synoniem voor reduce-functie.

Syntaxis

aggregate(expr, start, merge [, finish])

Argumenten

  • expr: Een MATRIX-expressie.
  • start: Een initiële waarde van elk type.
  • merge: Een lambda-functie die wordt gebruikt om het huidige element te aggregeren.
  • finish: Een optionele lambda-functie die wordt gebruikt om de aggregatie te voltooien.

Retourneert

Het resultaattype komt overeen met het resultaattype van de finish lambda-functie als deze bestaat of start.

Hiermee past u een expressie toe op een initiële status en alle elementen in de matrix en reduceert u deze tot één status. De uiteindelijke status wordt geconverteerd naar het uiteindelijke resultaat door een finish functie toe te passen.

De merge functie heeft twee parameters. De eerste is de accumulator, de tweede het element dat moet worden geaggregeerd. De accumulator en het resultaat moeten van het type startzijn. De optionele finish functie neemt één parameter en retourneert het uiteindelijke resultaat.

Voorbeelden

> SELECT aggregate(array(1, 2, 3), 0, (acc, x) -> acc + x);
 6
> SELECT aggregate(array(1, 2, 3), 0, (acc, x) -> acc + x, acc -> acc * 10);
 60

> SELECT aggregate(array(1, 2, 3, 4),
                   named_struct('sum', 0, 'cnt', 0),
                   (acc, x) -> named_struct('sum', acc.sum + x, 'cnt', acc.cnt + 1),
                   acc -> acc.sum / acc.cnt) AS avg
 2.5