GitHubContribute in GitHub: オンラインでの編集

dcount () (集約関数)

実装の違いについては、 KQL Compatibility を参照してください。

要約グループ内のスカラー式によって取得される個別値の数の見積もりを返します。

dcount() 集約関数は、主に巨大セットのカーディナリティーを見積もるのに役立ちます。 これは、正確性のためにパフォーマンスをトレードオフし、実行ごとに異なる結果を返す可能性があります。 入力の順序は、出力に影響を与える可能性があります。

構文

dcount (Expr[, Accuracy])

引数

タイプ 必須 説明
ストリング カウントされる特殊値を持つスカラー式。
正確性 int 要求される推定精度を定義するオプションの int リテラル。
サポートされる値については、以下を参照してください。 指定しない場合は、デフォルト値 1 が使用されます。

「正確度」が指定されている場合は、速度と正確度のバランスを制御します。

説明
0 最も正確で最速の計算。 1.6% エラー
1 デフォルト。精度と計算時間のバランスを取ります。約 0.8% エラーです。
※2 正確で低速な計算。約 0.4% のエラー。
3 非常に正確で低速な計算。約 0.28% のエラー。
4 非常に正確で最も遅い計算。約 0.2% のエラー。

異なる nameの数の見積もりを戻します。

events
    | project name, original_time
    | where original_time > ago(5m)
    | summarize NameCount=dcount(name)

結果

NameCount
2032

Gでグループ化された V の個別値の正確な数を取得します。

T | summarize by V, G | summarize count() by G

V の特殊値は Gの特殊値の数で乗算されるため、この計算には大量の内部メモリーが必要です。 これにより、メモリー・エラーが発生したり、実行時間が長くなったりする可能性があります。 dcount()は、高速で信頼性の高い代替手段を提供します。

T | summarize dcount(V) by G | count

推定精度

dcount() 集約関数は、セット・カーディナリティーの確率的推定を行う HyperLogLog (HLL) アルゴリズムのバリアントを使用します。 このアルゴリズムは、メモリー・サイズごとの精度と実行時間のバランスを取るために使用できる「ノブ」を提供します。

正確性 エラー (%) エントリー・カウント
0 1.6 212
1 0.8 214
2 0.4 216
3 0.28 217
4 0.2 218

「項目カウント」列は、HLL 実装における 1 バイト・カウンターの数です。

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

  • 正確度レベルが 1の場合、1000 個の値が返されます。
  • 正確度レベルが 2の場合、8000 個の値が返されます。

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