カテゴリ:

集計関数 (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 の例で、結合されたスケッチの値を見ることができます。