Подключаемый модуль dcount_intersect

Вычисляет пересечение между N наборов на hll основе значений (N в диапазоне [2..16]) и возвращает N dcount значений. Подключаемый модуль вызывается с evaluate помощью оператора .

Синтаксис

T| evaluatedcount_intersect(hll_1, hll_2, [,hll_3, ...])

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

Параметры

Имя Тип Обязательно Описание
T string ✔️ Входное табличное выражение.
hll_i Значения set Si , вычисленные с hll() помощью функции .

Возвращаемое значение

Возвращает таблицу со значениями N dcount (для каждого столбца, представляющего пересечения наборов). Имена столбцов: s0, s1, ... (до n-1).

Заданные наборы S1, S2, .. Возвращаемые значения Sn будут представлять собой различные счетчики:
S1,
S1 ∩ S2,
S1 ∩ S2 ∩ S3,
... ,
S1 ∩ S2 ∩ ... ∩ Sn

Примеры

// Generate numbers from 1 to 100
range x from 1 to 100 step 1
| extend isEven = (x % 2 == 0), isMod3 = (x % 3 == 0), isMod5 = (x % 5 == 0)
// Calculate conditional HLL values (note that '0' is included in each of them as additional value, so we will subtract it later)
| summarize hll_even = hll(iif(isEven, x, 0), 2),
            hll_mod3 = hll(iif(isMod3, x, 0), 2),
            hll_mod5 = hll(iif(isMod5, x, 0), 2) 
// Invoke the plugin that calculates dcount intersections         
| evaluate dcount_intersect(hll_even, hll_mod3, hll_mod5)
| project evenNumbers = s0 - 1,             //                             100 / 2 = 50
          even_and_mod3 = s1 - 1,           // gcd(2,3) = 6, therefor:     100 / 6 = 16
          even_and_mod3_and_mod5 = s2 - 1   // gcd(2,3,5) is 30, therefore: 100 / 30 = 3 

Выходные данные

EvenNumbers even_and_mod3 even_and_mod3_and_mod5
50 16 3