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.

Siehe auch:

APPROX_PERCENTILE_ACCUMULATE, APPROX_PERCENTILE_ESTIMATE

Syntax

APPROX_PERCENTILE_COMBINE( <state> )
Copy

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;
Copy

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;
Copy

Ein ausführlicheres Beispiel finden Sie im Abschnitt „Beispiele“ unter APPROX_PERCENTILE_ACCUMULATE.