dcountif() (集計関数)

述語が に評価される行の expr の個別の値の数をtrue推定します。

Null 値は無視され、計算に考慮されません。

Note

この関数は、summarize 演算子と組み合わせて使用します。

構文

dcountif(expr,predicate, [,accuracy])

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

パラメーター

名前 必須 説明
expr string ✔️ 集計計算に使用される式。
predicate string ✔️ 行のフィルター処理に使用される式。
精度 int 速度と精度の間の制御。 指定しない場合、既定値は 1 です。 サポートされている値に関する推定精度を参照してください。

戻り値

述語が に評価される行の expr の個別の値の数の推定値をtrue返します。

ヒント

すべての行が Predicate 式を渡す場合、またはどの行も渡さない場合、dcountif() がエラーを返す可能性があります。

以下の例では、各州で発生した破滅的な嵐の事象の種類の数を示します。

StormEvents
| summarize DifferentFatalEvents=dcountif(EventType,(DeathsDirect + DeathsIndirect)>0) by State
| where DifferentFatalEvents > 0
| order by DifferentFatalEvents 

表示される結果テーブルには、最初の 10 行のみが含まれます。

State DifferentFatalEvents
CALIFORNIA 12
テキサス州 12
オクラホマ 10
ILLINOIS 9
KANSAS 9
ニューヨーク 9
ニュージャージー 7
WASHINGTON 7
ミシガン 7
MISSOURI 7
... ...

推定精度

この関数では、セット カーディナリティの確率的推定を行う 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 エラー分布を示すグラフ。