- カテゴリ:
集計関数 (Cardinality Estimation) , ウィンドウ関数の構文と使用法
DATASKETCHES_HLL_ACCUMULATE¶
集約終了時にスケッチを返します。
この関数は、Apache DataSketches で使われている形式のバイナリスケッチを読むことができる HLL HyperLogLog 関数のバージョンです。詳細については、 Apache DataSketches ドキュメント をご参照ください。
DATASKETCHES_HLL は、最終的なカーディナリティの推定値が返されると、中間状態を破棄します。一括読み込み中の増分カーディナリティ推定などの高度なユースケースでは、中間状態の維持をお勧めします。中間状態は、後で他の中間状態と結合(マージ)したり、外部ツールにエクスポートしたりできます。
DATASKETCHES_HLL とは対照的に、 DATASKETCHES_HLL_ACCUMULATE はカーディナリティの推定値を返しません。代わりに、最後の推定ステップをスキップして、アルゴリズムの状態自体を返します。詳細については、 異なる値の数の推定 をご参照ください。
- こちらもご参照ください。
構文¶
DATASKETCHES_HLL_ACCUMULATE( [ DISTINCT ] <expr> [ , <max_log_k> ] )
必要な引数¶
expr
カーディナリティー(個別の値の数)を推定する式です。これは通常列名ですが、より一般的な式にすることもできます。
オプションの引数¶
max_log_k
この和集合のKの最大値(log2)。INTEGER の値を4から21の間で指定します。詳細については、 Apache DataSketches ドキュメント をご参照ください。
デフォルト: 12
戻り値¶
この関数はApache Datasketchesライブラリと互換性のある BINARY の値を返します。
使用上の注意¶
DISTINCT はサポートされていますが、効果はありません。
この関数は、以下のデータ型の引数をサポートしています。
文字列およびバイナリデータ型 (例えば、 VARCHAR や BINARY)。
例えば、以下の関数呼び出しがサポートされています。
SELECT DATASKETCHES_HLL_ACCUMULATE(1::TEXT);
SELECT DATASKETCHES_HLL_ACCUMULATE(TO_BINARY(HEX_ENCODE(1), 'HEX'));
浮動小数点数のデータ型 (例えば、 FLOAT や DOUBLE)
DataSketches ライブラリはこれらの値を DOUBLE の値にキャストします。
固定小数点数のデータ型 (例えば、 INTEGER や NUMERIC)。
この関数は、スケールが0の数値タイプのみをサポートしています。ただし、0以外のスケールを持つ数値を浮動小数点数のデータ型にキャストすることはできます。
DataSketches ライブラリは、これらの値を64ビット符号付き INTEGER から64ビット符号付き INTEGER 値の範囲にキャストします。
DataSketches ライブラリは、64ビット符号付き INTEGER の範囲を超える INTEGER 値(128ビット整数値など)を直接キャストしません。しかし、Snowflakeは DataSketches がサポートする DOUBLE 値に自動的に変換することでこれらの値をサポートしています。この動作は、
datasketches-python
ライブラリの動作と同じです。
他のデータ型の値はサポートされていません。例えば、 VARIANT と ARRAY の値はサポートされていません。
例¶
テーブルを作成して値を挿入します。
CREATE OR REPLACE TABLE datasketches_demo(v INT, g INT);
INSERT INTO datasketches_demo SELECT 1, 1;
INSERT INTO datasketches_demo SELECT 2, 1;
INSERT INTO datasketches_demo SELECT 2, 1;
INSERT INTO datasketches_demo SELECT 2, 1;
INSERT INTO datasketches_demo SELECT 1, 2;
INSERT INTO datasketches_demo SELECT 1, 2;
INSERT INTO datasketches_demo SELECT 4, 2;
INSERT INTO datasketches_demo SELECT 4, 2;
INSERT INTO datasketches_demo SELECT 5, 2;
DATASKETCHES_HLL_ACCUMULATE 関数を使用して、列 v
のデータを、列 g
の値 1
と 2
でグループ化した2つのバイナリスケッチを作成します。
SELECT g,
DATASKETCHES_HLL_ACCUMULATE(v) AS accumulated_sketches
FROM datasketches_demo
GROUP BY g;
+---+------------------------------------------+
| G | ACCUMULATED_SKETCHES |
|---+------------------------------------------|
| 1 | 0201070C030802002BF2FB06862FF90D |
| 2 | 0201070C030803002BF2FB0681BC5D067B65E608 |
+---+------------------------------------------+