Поделиться через


dcountif() (функция агрегирования)

Область применения: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Оценивает количество уникальных значений экспра для строк, в которых предикат оцениваетсяtrue.

Значения NULL игнорируются и не учитываются в вычислении.

Примечание.

Эта функция используется в сочетании с оператором сводки.

Синтаксис

dcountif(expr, предикат, [, точность])

Дополнительные сведения о соглашениях синтаксиса.

Параметры

Имя (название) Type Обязательно Описание
expr string ✔️ Выражение, используемое для вычисления агрегирования.
predicate string ✔️ Выражение, используемое для фильтрации строк.
точность int Элемент управления между скоростью и точностью. Если не задано иное, по умолчанию используется значение 1. См . сведения о точности оценки поддерживаемых значений.

Возвраты

Возвращает оценку количества уникальных значений экспра для строк, в которых вычисляется trueпредикат.

Совет

dcountif() Может возвращать ошибку в случаях, когда все строки или ни одна из строк не передают Predicate выражение.

Пример

В этом примере показано, сколько типов смертельных событий шторма произошло в каждом состоянии.

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

Показанная таблица результатов содержит только первые 10 строк.

Штат DifferentFatalEvents
CALIFORNIA 12
TEXAS 12
ОКЛАХОМА 10
ИЛЛИНОЙС 9
КАНЗАС 9
NEW YORK 9
НЬЮ-ДЖЕРСИ 7
ВАШИНГТОН 7
МИЧИГАН 7
МИССУРИ 7
... ...

Точность оценки

Эта функция использует вариант алгоритма HyperLogLog (HLL), который выполняет стохастиическую оценку кратности набора. Алгоритм предоставляет "рычаг управления", который можно использовать для выравнивания точности и времени выполнения под размер памяти:

Правильность Ошибка (%) Число записей
0 1,6 212
1 0,8 214
2 0,4 216
3 0,28 217
4 0,2 218

Примечание.

Столбец "число записей" — это количество 1-байтных счетчиков в реализации HLL.

Алгоритм включает в себя некоторые положения для выполнения идеального подсчета (нулевой ошибки), если кратность набора достаточно мала:

  • если уровень точности равен 1, возвращаются значения 1000;
  • если уровень точности равен 2, возвращаются значения 8000.

Границы погрешности — вероятностная, а не теоретическая граница. Значение является стандартным отклонением распределения погрешностей (сигма). 99,7 % оценок будут иметь относительную погрешность в 3 сигмы.

На следующем изображении показана функция распределения вероятности относительной погрешности оценки (в процентах) для всех поддерживаемых параметров точности:

График, показывающий распределение ошибок hll.