カテゴリ:

集計関数 (Cardinality Estimation) , ウィンドウ関数の構文と使用法

DATASKETCHES_HLL_ACCUMULATE

集約終了時にスケッチを返します。

この関数は、Apache DataSketches で使われている形式のバイナリスケッチを読むことができる HLL HyperLogLog 関数のバージョンです。詳細については、 Apache DataSketches ドキュメント をご参照ください。

DATASKETCHES_HLL は、最終的なカーディナリティの推定値が返されると、中間状態を破棄します。一括読み込み中の増分カーディナリティ推定などの高度なユースケースでは、中間状態の維持をお勧めします。中間状態は、後で他の中間状態と結合(マージ)したり、外部ツールにエクスポートしたりできます。

DATASKETCHES_HLL とは対照的に、 DATASKETCHES_HLL_ACCUMULATE はカーディナリティの推定値を返しません。代わりに、最後の推定ステップをスキップして、アルゴリズムの状態自体を返します。詳細については、 異なる値の数の推定 をご参照ください。

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

DATASKETCHES_HLL_COMBINEDATASKETCHES_HLL_ESTIMATE

構文

DATASKETCHES_HLL_ACCUMULATE( [ DISTINCT ] <expr> [ , <max_log_k> ] )
Copy

必要な引数

expr

カーディナリティー(個別の値の数)を推定する式です。これは通常列名ですが、より一般的な式にすることもできます。

オプションの引数

max_log_k

この和集合のKの最大値(log2)。INTEGER の値を4から21の間で指定します。詳細については、 Apache DataSketches ドキュメント をご参照ください。

デフォルト: 12

戻り値

この関数はApache Datasketchesライブラリと互換性のある BINARY の値を返します。

使用上の注意

  • DISTINCT はサポートされていますが、効果はありません。

  • この関数は、以下のデータ型の引数をサポートしています。

    • 文字列およびバイナリデータ型 (例えば、 VARCHAR や BINARY)。

      例えば、以下の関数呼び出しがサポートされています。

      SELECT DATASKETCHES_HLL_ACCUMULATE(1::TEXT);
      
      Copy
      SELECT DATASKETCHES_HLL_ACCUMULATE(TO_BINARY(HEX_ENCODE(1), 'HEX'));
      
      Copy
    • 浮動小数点数のデータ型 (例えば、 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;
Copy

DATASKETCHES_HLL_ACCUMULATE 関数を使用して、列 v のデータを、列 g の値 12 でグループ化した2つのバイナリスケッチを作成します。

SELECT g,
       DATASKETCHES_HLL_ACCUMULATE(v) AS accumulated_sketches
  FROM datasketches_demo
  GROUP BY g;
Copy
+---+------------------------------------------+
| G | ACCUMULATED_SKETCHES                     |
|---+------------------------------------------|
| 1 | 0201070C030802002BF2FB06862FF90D         |
| 2 | 0201070C030803002BF2FB0681BC5D067B65E608 |
+---+------------------------------------------+