カテゴリ:

集計関数 (パーセンタイル推定)、 ウィンドウ関数

APPROX_PERCENTILE_COMBINE

パーセンタイルの入力状態を単一の出力状態に結合(マージ)します。

これにより、 APPROX_PERCENTILE_ACCUMULATE が同じテーブルの水平パーティションで実行され、各テーブルパーティションのアルゴリズム状態が生成されるシナリオが可能になります。その後、これらの状態を APPROX_PERCENTILE_COMBINE を使用して結合し、テーブル全体で APPROX_PERCENTILE_ACCUMULATE を1回実行するのと同じ出力状態を生成できます。

こちらもご参照ください。

APPROX_PERCENTILE_ACCUMULATEAPPROX_PERCENTILE_ESTIMATE

構文

APPROX_PERCENTILE_COMBINE( <state> )
Copy

引数

state

APPROX_PERCENTILE_ACCUMULATE の呼び出しによって生成された状態情報を含む式です。

testtable.c2 列の数値の中央値の近似値を返します(0.5は50番目のパーセンタイルを意味します)。

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

mytest.s1 union mytest2.s2 の数値の2番目のパーセンタイルの近似値を返します。

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

より広範な例については、 APPROX_PERCENTILE_ACCUMULATE にある例のセクションをご参照ください。