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 シグマ未満の相対誤差があります。