ドキュメントによると:
式の値のグループのおおよその境界を返します。ここで、numberは作成する分位数の数を表します。この関数は、数値+ 1要素の配列を返します。ここで、最初の要素はおおよその最小値であり、最後の要素はおおよその最大値です。
真の四分位数が必要な場合は、APPROX_QUANTILES(values, 4)
どちらを使用する必要があるようです。[minvalue, 1st quartile, 2nd quartile, 3rd quartile, maxvalue]
https://en.wikipedia.org/wiki/Quartileによると、四分位数セットには3つのデータポイントが含まれています。いずれもデータの最小値/最大値ではありません。
私の仮定は正しいですか?されたAPPROX_QUANTILES(values, 4)
真の四分位数を返すために行くの?
ベースラインとして、これは1から100までの数値の入力を使用した、変更なしの出力です。
SELECT APPROX_QUANTILES(x, 4) AS output
FROM UNNEST(GENERATE_ARRAY(1, 100)) AS x;
+----------------------------+
| output |
+----------------------------+
| ["1","25","50","75","100"] |
+----------------------------+
出力には、最小(1)と最大(100)の両方が含まれます。四分位数だけが必要な場合は、配列からそれらを取り除く必要があります。読みやすさ/構成性のために、一時的なSQLUDFを使用してこれを行うのが最善です。ここINT64
では要素タイプに使用していますが、別の要素タイプを使用することもできます。
CREATE TEMP FUNCTION StripFirstLast(arr ARRAY<INT64>) AS (
ARRAY(SELECT x FROM UNNEST(arr) AS x WITH OFFSET
WHERE OFFSET BETWEEN 1 AND ARRAY_LENGTH(arr) - 2)
);
SELECT
APPROX_QUANTILES(x, 4) AS output,
StripFirstLast(APPROX_QUANTILES(x, 4)) AS quartiles
FROM UNNEST(GENERATE_ARRAY(1, 100)) AS x;
+----------------------------+------------------+
| output | quartiles |
+----------------------------+------------------+
| ["1","25","50","75","100"] | ["25","50","75"] |
+----------------------------+------------------+
quartiles
配列に必要な値のみが含まれていることがわかります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加