hll_merge()

HLL の結果をマージします。 これは、集計バージョン のスカラー バージョン hll_merge()です。

基になるアルゴリズム(HyperLogLog)と推定精度について確認します。

重要

hll()、hll_if()、およびhll_merge() の結果を格納し、後で取得できます。 たとえば、日単位の一意のユーザーの概要を作成し、それを使用して週単位のカウントを計算できます。 ただし、これらの結果の正確なバイナリ表現は、時間の経過と同時に変化する可能性があります。 これらの関数が同一の入力に対して同じ結果を生成する保証はないため、それらに依存することはお勧めしません。

構文

hll_merge(Hll,hll2, [ hll3, ... ])

構文規則について詳しく知る。

パラメーター

名前 必須 説明
hllhll2、... string ✔️ マージする HLL 値を含む列名。 この関数では、2 から 64 個の引数が必要です。

戻り値

1 つの HLL 値を返します。 値は、 列 hllhll2、..をマージした結果です。 hllN

この例では、マージされた列の値を示します。

range x from 1 to 10 step 1 
| extend y = x + 10
| summarize hll_x = hll(x), hll_y = hll(y)
| project merged = hll_merge(hll_x, hll_y)
| project dcount_hll(merged)

出力

dcount_hll_merged
20

推定精度

この関数では、セット カーディナリティの確率的推定を行う HyperLogLog (HLL) アルゴリズム の異形が使用されます。 アルゴリズムには、メモリ サイズごとの精度と実行時間のバランスを取るために使用できる "ノブ" が用意されています。

精度 エラー (%) エントリ数
0 1.6 212
1 0.8 214
2 0.4 216
3 0.28 217
4 0.2 218

Note

"エントリ数" 列は、HLL 実装における 1 バイト カウンターの数です。

セット カーディナリティが十分に小さい場合、アルゴリズムには完璧なカウント (ゼロ エラー) を行うためのいくつかの条件が含まれています。

  • 精度レベルが 1 の場合は 1,000 個の値を返す
  • 精度レベルが 2 の場合は 8,000 個の値を返す

誤り限界は確率的であり、理論限界ではありません。 値は、誤差分布の標準偏差 (シグマ) であり、推定量 の 99.7% は 3 x シグマ未満の相対エラーになります。

次の図は、サポートされているすべての精度設定の相対的な推定誤差の確率分布関数をパーセントで示したものです。

hll エラー分布を示すグラフ。