- カテゴリ:
集計関数 (Cardinality Estimation) , ウィンドウ関数の構文と使用法
DATASKETCHES_HLL_ESTIMATE¶
与えられたスケッチのカーディナリティ推定値を返します。
この関数は、Apache DataSketches で使われている形式のバイナリスケッチを読むことができる HLL HyperLogLog 関数のバージョンです。詳細については、 Apache DataSketches ドキュメント をご参照ください。
DATASKETCHES_HLL_COMBINE 関数によって生成されたスケッチは、 DATASKETCHES_HLL_ESTIMATE 関数を使用してカーディナリティ推定値を計算するために使用できます。
構文¶
DATASKETCHES_HLL_ESTIMATE( <binary_sketch> )
引数¶
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;
以下の例では、テーブルのデータを使用しています。
蓄積されたバイナリスケッチのカーディナリティ推定値を返します。¶
以下の例では、以下のアクションを実行します。
DATASKETCHES_HLL_ACCUMULATE 関数は、列
v
のデータを、列g
の値1
と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;
+---+----------------------+
| G | ACCUMULATED_ESTIMATE |
|---+----------------------|
| 1 | 2.000000005 |
| 2 | 3.000000015 |
+---+----------------------+
DATASKETCHES_HLL_ACCUMULATE の例で、蓄積されたスケッチの値を見ることができます。
結合されたバイナリスケッチのカーディナリティ推定値を返します。¶
以下の例では、以下のアクションを実行します。
DATASKETCHES_HLL_ACCUMULATE 関数は、列
v
のデータを、列g
の値1
と2
でグループ化した2つのバイナリスケッチを作成します。DATASKETCHES_HLL_COMBINE 関数は、これらのバイナリスケッチを統合します。
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;
+------------------+
| UNIFIED_ESTIMATE |
|------------------|
| 4.00000003 |
+------------------+
DATASKETCHES_HLL_COMBINE の例で、結合されたスケッチの値を見ることができます。