dcount_intersect 플러그 인
적용 대상: ✅Microsoft Fabric✅Azure Data Explorer
값([2..16] 범위의 N)을 기준으로 hll
N 집합 간의 교집합을 계산하고 N dcount
값을 반환합니다. 플러그 인은 연산자를 사용하여 호출됩니다 evaluate
.
구문
T | evaluate
dcount_intersect(
hll_1, hll_2, [ ,
hll_3,
...])
구문 규칙에 대해 자세히 알아봅니다.
매개 변수
이름 | Type | 필수 | 설명 |
---|---|---|---|
T | string |
✔️ | 입력 테이블 형식 식입니다. |
hll_i | 함수를 사용하여 계산한 S집합 의 값입니다 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 |