본문으로 건너뛰기
최종 수정: 에

BITMAP-UNION-INT

설명​

입력 표현식에서 음수가 아닌 정수의 고유 개수를 계산하며, 음수와 NULL은 무시합니다.

지원되는 정수 입력의 경우, 이 함수는 COUNT(DISTINCT CASE WHEN expr >= 0 THEN expr END) 및 BITMAP_COUNT(BITMAP_AGG(expr))와 동일한 결과를 반환합니다. 입력에 음수가 없을 때만 COUNT(DISTINCT expr)와 동일한 결과를 반환합니다.

사용 시 참고 사항​

개발 버전에서는 음수를 무시합니다. 이전 릴리스에서는 음수를 집계할 수 있으므로, 음수 입력이 포함된 쿼리는 업그레이드 후 다른 결과를 반환할 수 있습니다.

구문​

BITMAP_UNION_INT(<expr>)

매개변수​

매개변수설명
<expr>입력 표현식입니다. 지원되는 타입: TinyInt, SmallInt, Integer.

반환 값​

음수가 아닌 정수의 고유 개수를 BIGINT로 반환합니다. NULL과 음수는 무시합니다. 입력이 비어 있거나 그룹에 NULL과 음수만 포함된 경우 0을 반환하며, 결과가 NULL인 경우는 없습니다.

예제​

-- setup
CREATE TABLE pv_bitmap (
dt INT,
page INT,
user_id BITMAP
) DISTRIBUTED BY HASH(dt) BUCKETS 1
PROPERTIES ("replication_num" = "1");
INSERT INTO pv_bitmap VALUES
(1, 100, to_bitmap(100)),
(1, 100, to_bitmap(200)),
(1, 100, to_bitmap(300)),
(1, 300, to_bitmap(300)),
(2, 200, to_bitmap(300));
Query OK, 0 rows affected
Query OK, 5 rows affected
select bitmap_union_int(dt) from pv_bitmap;
+----------------------+
| bitmap_union_int(dt) |
+----------------------+
| 2 |
+----------------------+
select bitmap_union_int(dt) from pv_bitmap where dt is null;
+----------------------+
| bitmap_union_int(dt) |
+----------------------+
| 0 |
+----------------------+

음의 정수는 제외하고 영은 포함합니다:

SELECT bitmap_union_int(x) AS nonnegative_count
FROM (
SELECT -1 AS x UNION ALL SELECT 0 UNION ALL SELECT 1
UNION ALL SELECT 1 UNION ALL SELECT NULL
) AS input;
+-------------------+
| nonnegative_count |
+-------------------+
| 2 |
+-------------------+

음수와 NULL만 포함된 그룹은 영을 반환합니다:

SELECT bitmap_union_int(x) AS nonnegative_count
FROM (SELECT -1 AS x UNION ALL SELECT -2 UNION ALL SELECT NULL) AS input;
+-------------------+
| nonnegative_count |
+-------------------+
| 0 |
+-------------------+