メインコンテンツまでスキップ
に最終更新

PERCENTILE_APPROX_ARRAY

説明​

PERCENTILE_APPROX_ARRAY は一回の集約で複数の近似パーセンタイルを計算します。入力値から一つの T-Digest を構築し、共有状態から指定された各パーセンタイルを評価するため、各パーセンタイルに PERCENTILE_APPROX を別々に呼び出すより効率的です。

注記

この関数は 4.2.0 以降でサポートされます。

構文​

PERCENTILE_APPROX_ARRAY(<col>, <quantiles> [, <compression>])

パラメータ​

パラメータ説明
<col>パーセンタイルを計算する数値式。値は DOUBLE に変換され、NULL 値は無視されます。
<quantiles>定数の ARRAY<DOUBLE>。各要素は有限かつ NULL 以外で、[0.0, 1.0] の範囲にある必要があります。結果は配列と同じ順序で返され、重複するレベルも保持されます。空配列も指定できます。
<compression>省略可能な定数の DOUBLE。範囲は [2048, 10000] です。値が大きいほど一般に精度が上がりますが、メモリ使用量も増えます。デフォルトは 10000 で、有限でない値や有効範囲外の値を指定した場合も 10000 を使用します。

戻り値​

ARRAY<DOUBLE> を返します。<quantiles> の各要素に対応する近似パーセンタイルを一つずつ含みます。<quantiles> が空の場合、またはグループ内に NULL 以外の入力値がない場合は空配列を返します。パーセンタイルのレベルが無効な場合や、<quantiles> に NULL 要素が含まれる場合はエラーになります。

使用例​

CREATE TABLE percentile_approx_array_example (
id INT,
value DOUBLE NULL
) DUPLICATE KEY(id)
DISTRIBUTED BY HASH(id) BUCKETS 1
PROPERTIES ("replication_num" = "1");

INSERT INTO percentile_approx_array_example VALUES
(1, 1.0), (2, 2.0), (3, 3.0), (4, NULL),
(5, 10.0), (6, 20.0), (7, 30.0), (8, 100.0);

デフォルトの圧縮レベルで複数の近似パーセンタイルを計算する場合:

SELECT percentile_approx_array(value, [0.0, 0.25, 0.5, 0.75, 1.0]) AS percentiles
FROM percentile_approx_array_example;
+--------------------------+
| percentiles |
+--------------------------+
| [1, 2.25, 10, 27.5, 100] |
+--------------------------+

圧縮レベルを明示的に指定する場合:

SELECT percentile_approx_array(value, [0.25, 0.5, 0.75], 2048) AS percentiles
FROM percentile_approx_array_example;
+------------------+
| percentiles |
+------------------+
| [2.25, 10, 27.5] |
+------------------+

入力がすべて NULL の場合は空配列を返します:

SELECT percentile_approx_array(CAST(NULL AS DOUBLE), [0.0, 0.5, 1.0]) AS percentiles
FROM percentile_approx_array_example;
+-------------+
| percentiles |
+-------------+
| [] |
+-------------+

パーセンタイルの配列が空の場合も空配列を返します:

SELECT percentile_approx_array(value, []) AS percentiles
FROM percentile_approx_array_example;
+-------------+
| percentiles |
+-------------+
| [] |
+-------------+