カテゴリ:

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

DATASKETCHES_HLL_ESTIMATE

与えられたスケッチのカーディナリティ推定値を返します。

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

DATASKETCHES_HLL_COMBINE 関数によって生成されたスケッチは、 DATASKETCHES_HLL_ESTIMATE 関数を使用してカーディナリティ推定値を計算するために使用できます。

構文

DATASKETCHES_HLL_ESTIMATE( <binary_sketch> )
Copy

引数

binary_sketch

スケッチ情報をバイナリ形式で含んでいる式。

戻り値

この関数は、 DOUBLE 型の値を返します。

入力が空の場合、出力は 0.0 です。

注釈

この関数は、 INTEGER の値を返す HLL_ESTIMATE 関数とは異なるタイプの値を返します。

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

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_ESTIMATE 関数は、各累積スケッチのカーディナリティ推定値を返します。

WITH
  accumulated AS (
    SELECT g,
           DATASKETCHES_HLL_ACCUMULATE(v) AS accumulated_sketches
      FROM datasketches_demo
      GROUP BY g)
SELECT g, DATASKETCHES_HLL_ESTIMATE(accumulated_sketches) AS accumulated_estimate
  FROM accumulated;
Copy
+---+----------------------+
| G | ACCUMULATED_ESTIMATE |
|---+----------------------|
| 1 |          2.000000005 |
| 2 |          3.000000015 |
+---+----------------------+

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

結合されたバイナリスケッチのカーディナリティ推定値を返します。

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

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

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

  3. DATASKETCHES_HLL_ESTIMATE 関数は、統一スケッチのカーディナリティ推定値を返します。

WITH
  accumulated AS (
    SELECT g,
           DATASKETCHES_HLL_ACCUMULATE(v) AS accumulated_sketches
      FROM datasketches_demo
      GROUP BY g),
  combined AS (
    SELECT DATASKETCHES_HLL_COMBINE(accumulated_sketches) AS unified
      FROM accumulated)
SELECT DATASKETCHES_HLL_ESTIMATE(unified) AS unified_estimate
  FROM combined;
Copy
+------------------+
| UNIFIED_ESTIMATE |
|------------------|
|       4.00000003 |
+------------------+

DATASKETCHES_HLL_COMBINE の例で、結合されたスケッチの値を見ることができます。