カテゴリ:

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

DATASKETCHES_HLL_COMBINE

入力スケッチを1つの出力スケッチに結合(マージ)します。

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

この関数は、 DATASKETCHES_HLL_ACCUMULATE 関数を同じテーブルの水平パーティションに対して実行し、各テーブルパーティションのアルゴリズムスケッチを生成するシナリオを可能にします。これらのスケッチは、後でこの関数を使用して結合することができ、テーブル全体にわたって DATASKETCHES_HLL_ACCUMULATE を1回実行したのと同じ出力スケッチを生成します。

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

DATASKETCHES_HLL_ACCUMULATE

構文

DATASKETCHES_HLL_COMBINE( [ DISTINCT ]  <state> [ , <max_log_k> ] )
Copy

必要な引数

state

DATASKETCHES_HLL_ACCUMULATE の呼び出しによって生成された状態情報を含む式です。

オプションの引数

max_log_k

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

デフォルト: 12

戻り値

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

使用上の注意

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

テーブルを作成して値を挿入します。

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

以下の例では、以下のアクションを実行します。

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

  2. DATASKETCHES_HLL_COMBINE 関数はこれらのバイナリスケッチを結合します。

WITH
  accumulated AS (
    SELECT g,
           DATASKETCHES_HLL_ACCUMULATE(v) AS accumulated_sketches
      FROM datasketches_demo
      GROUP BY g)
SELECT DATASKETCHES_HLL_COMBINE(accumulated_sketches) AS combined_sketches
  FROM accumulated;
Copy
+--------------------------------------------------+
| COMBINED_SKETCHES                                |
|--------------------------------------------------|
| 0201070C030804002BF2FB06862FF90D81BC5D067B65E608 |
+--------------------------------------------------+

DATASKETCHES_HLL_ACCUMULATE の例で、蓄積されたスケッチの値を見ることができます。