- Kategorien:
Aggregationsfunktionen (Perzentilschätzung), Fensterfunktionen
APPROX_PERCENTILE_COMBINE¶
Kombiniert mehrere Perzentil-Eingabestatus zu einem einzigen Ausgabestatus (d. h. sie werden zusammengeführt).
Dies erlaubt Szenarien, in denen APPROX_PERCENTILE_ACCUMULATE für horizontale Partitionen derselben Tabelle ausgeführt wird, wodurch für jede Tabellenpartition ein algorithmischer Status erzeugt wird. Anschließend können diese Status mithilfe von APPROX_PERCENTILE_COMBINE zusammengefasst werden, wodurch derselbe Ausgabestatus erzeugt wird wie bei einer einzelnen Ausführung von APPROX_PERCENTILE_ACCUMULATE für die gesamte Tabelle.
Syntax¶
APPROX_PERCENTILE_COMBINE( <state> )
Argumente¶
state
Ein Ausdruck, der Statusinformationen enthält, die durch einen Aufruf von APPROX_PERCENTILE_ACCUMULATE generiert wurden.
Beispiel¶
Zurückgeben einer Näherung für den Mittelwert der Zahlen in der Spalte testtable.c2
(0,5 steht für das 50. Perzentil):
CREATE OR REPLACE TABLE mytesttable AS SELECT APPROX_PERCENTILE_COMBINE(td) s FROM ( (SELECT APPROX_PERCENTILE_ACCUMULATE(c2) td FROM testtable WHERE c2 <= 0) UNION ALL (SELECT APPROX_PERCENTILE_ACCUMULATE(c2) td FROM testtable WHERE c2 > 0 AND c2 <= 0.5) UNION ALL (SELECT APPROX_PERCENTILE_ACCUMULATE(C2) td FROM testtable WHERE c2 > 0.5) ); SELECT APPROX_PERCENTILE_ESTIMATE(s , 0.5) FROM mytesttable;
Zurückgeben eines approximierten Werts für das 2. Perzentil der Zahlen in mytest.s1 union mytest2.s2
.
CREATE OR REPLACE TABLE mytest AS (SELECT APPROX_PERCENTILE_ACCUMULATE(c2) s1 FROM testtable WHERE c2 < 0); CREATE OR REPLACE TABLE mytest2 AS (SELECT APPROX_PERCENTILE_ACCUMULATE(c2) s1 FROM testtable WHERE c2 >= 0); CREATE OR REPLACE TABLE combinedtable AS SELECT APPROX_PERCENTILE_COMBINE(s) combinedstate FROM ( (SELECT s1 s FROM mytest) UNION ALL (SELECT s1 s FROM mytest2) ); SELECT APPROX_PERCENTILE_ESTIMATE(combinedstate , 0.02) FROM combinedtable;
Ein ausführlicheres Beispiel finden Sie im Abschnitt „Beispiele“ unter APPROX_PERCENTILE_ACCUMULATE.