標準 SQL の近似集計関数

近似集計関数は、メモリ使用量と時間においてはスケーラブルですが、正確な結果ではなく、近似的な結果を生成します。詳しい背景情報については、近似集計をご覧ください。

APPROX_COUNT_DISTINCT

APPROX_COUNT_DISTINCT(expression)

説明

COUNT(DISTINCT expression) の近似結果を返します。返される値は統計的な推定値であり、必ずしも実際の値ではありません。

この関数は COUNT(DISTINCT expression) よりも精度は低いものの、入力値が非常に多い場合はより効率的に処理できます。

サポートされる引数の型

ARRAYSTRUCT除くすべてのデータ型

返されるデータ型

INT64

SELECT APPROX_COUNT_DISTINCT(x) as approx_distinct
FROM UNNEST([0, 1, 1, 2, 3, 5]) as x;

+-----------------+
| approx_distinct |
+-----------------+
| 5               |
+-----------------+

APPROX_QUANTILES

APPROX_QUANTILES([DISTINCT] expression, number [{IGNORE|RESPECT} NULLS])

説明

expression の値のグループに対する近似境界を返します。number は作成する変位値の数を表します。この関数は、number + 1 個の要素からなる配列を返します。最初の要素は近似最小値であり、最後の要素は近似最大値です。

サポートされる引数の型

expression には、サポートされているデータ型のうち、ARRAYSTRUCT除くすべてのデータ型を使用できます。

number は INT64 にする必要があります。

省略可能な句

次の順番で句が適用されます。

  1. DISTINCT: expression で重複した値を除いて結果を返します。

  2. IGNORE NULLS または RESPECT NULLS: IGNORE NULLS が指定されている場合、またはどちらも指定されていない場合、NULL 値は結果から除外されます。RESPECT NULLS を指定した場合、結果に NULL 値が含まれます。ただし、最終的なクエリ結果の配列に NULL 要素が含まれる場合にはエラーが発生します。

返されるデータ型

expression パラメータで指定された型の ARRAY。

ゼロ入力行がある場合に NULL を返すか、expression によってすべての行が NULL と評価されます。

SELECT APPROX_QUANTILES(x, 2) AS approx_quantiles
FROM UNNEST([NULL, NULL, 1, 1, 1, 4, 5, 6, 7, 8, 9, 10]) AS x;

+------------------+
| approx_quantiles |
+------------------+
| [1, 5, 10]       |
+------------------+

SELECT APPROX_QUANTILES(x, 100)[OFFSET(90)] AS percentile_90
FROM UNNEST([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) AS x;

+---------------+
| percentile_90 |
+---------------+
| 9             |
+---------------+

SELECT APPROX_QUANTILES(DISTINCT x, 2) AS approx_quantiles
FROM UNNEST([NULL, NULL, 1, 1, 1, 4, 5, 6, 7, 8, 9, 10]) AS x;

+------------------+
| approx_quantiles |
+------------------+
| [1, 6, 10]       |
+------------------+

SELECT FORMAT("%T", APPROX_QUANTILES(x, 2 RESPECT NULLS)) AS approx_quantiles
FROM UNNEST([NULL, NULL, 1, 1, 1, 4, 5, 6, 7, 8, 9, 10]) AS x;

+------------------+
| approx_quantiles |
+------------------+
| [NULL, 4, 10]    |
+------------------+

SELECT FORMAT("%T", APPROX_QUANTILES(DISTINCT x, 2 RESPECT NULLS)) AS approx_quantiles
FROM UNNEST([NULL, NULL, 1, 1, 1, 4, 5, 6, 7, 8, 9, 10]) AS x;

+------------------+
| approx_quantiles |
+------------------+
| [NULL, 6, 10]    |
+------------------+

APPROX_TOP_COUNT

APPROX_TOP_COUNT(expression, number)

説明

expression の近似トップ要素を返します。number パラメータによって、返される要素の数が指定されます。

サポートされる引数の型

expressionGROUP BY 句がサポートしているどのデータ型のものにすることもできます。

number は INT64 にする必要があります。

返されるデータ型

STRUCT 型の ARRAY。STRUCT には 2 つのフィールドが含まれています。最初のフィールド(value)には入力値が含まれています。2 番目のフィールド(count)には、値が返された回数を示す INT64 が含まれています。

入力行がない場合、NULL を返します。

SELECT APPROX_TOP_COUNT(x, 2) as approx_top_count
FROM UNNEST(["apple", "apple", "pear", "pear", "pear", "banana"]) as x;

+-------------------------+
| approx_top_count        |
+-------------------------+
| [{pear, 3}, {apple, 2}] |
+-------------------------+

NULL の処理

APPROX_TOP_COUNT では、入力に含まれる NULL は無視されません。次に例を示します。

SELECT APPROX_TOP_COUNT(x, 2) as approx_top_count
FROM UNNEST([NULL, "pear", "pear", "pear", "apple", NULL]) as x;

+------------------------+
| approx_top_count       |
+------------------------+
| [{pear, 3}, {NULL, 2}] |
+------------------------+

APPROX_TOP_SUM

APPROX_TOP_SUM(expression, weight, number)

説明

割り当てられた weight の合計に基づいて expression の近似トップ要素を返します。number パラメータで、返される要素の数を指定します。

weight 入力が負の値または NaN の場合、この関数はエラーを返します。

サポートされる引数の型

expression には、GROUP BY 句がサポートしているどのデータ型も使用できます。

weight は、以下のいずれかにする必要があります。

  • INT64
  • FLOAT64

number は INT64 にする必要があります。

返されるデータ型

STRUCT 型の ARRAY。STRUCT は、valuesum の 2 つのフィールドで構成されます。value フィールドには入力式の値が含まれます。sum フィールドは weight と同じ型であり、ここには value フィールドに関連付けられた weight 入力の近似値の合計が含まれます。

入力行がない場合、NULL を返します。

SELECT APPROX_TOP_SUM(x, weight, 2) AS approx_top_sum FROM
UNNEST([
  STRUCT("apple" AS x, 3 AS weight),
  ("pear", 2),
  ("apple", 0),
  ("banana", 5),
  ("pear", 4)
]);

+--------------------------+
| approx_top_sum           |
+--------------------------+
| [{pear, 6}, {banana, 5}] |
+--------------------------+

NULL の処理

APPROX_TOP_SUM は、expression パラメータと weight パラメータの NULL 値を無視しません。

SELECT APPROX_TOP_SUM(x, weight, 2) AS approx_top_sum FROM
UNNEST([STRUCT("apple" AS x, NULL AS weight), ("pear", 0), ("pear", NULL)]);

+----------------------------+
| approx_top_sum             |
+----------------------------+
| [{pear, 0}, {apple, NULL}] |
+----------------------------+
SELECT APPROX_TOP_SUM(x, weight, 2) AS approx_top_sum FROM
UNNEST([STRUCT("apple" AS x, 0 AS weight), (NULL, 2)]);

+-------------------------+
| approx_top_sum          |
+-------------------------+
| [{NULL, 2}, {apple, 0}] |
+-------------------------+
SELECT APPROX_TOP_SUM(x, weight, 2) AS approx_top_sum FROM
UNNEST([STRUCT("apple" AS x, 0 AS weight), (NULL, NULL)]);

+----------------------------+
| approx_top_sum             |
+----------------------------+
| [{apple, 0}, {NULL, NULL}] |
+----------------------------+
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。