BITMAP_TO_ARRAY
BITMAP_TO_ARRAY (비트맵을 배열로)
입력 비트맵에서 설정된 모든 비트의 위치를 담은 ARRAY를 반환해요.
본문
구문
BITMAP_TO_ARRAY( <bitmap> [, <bucket_number> ] )
인자
bitmap
BITMAP_CONSTRUCT_AGG, BITMAP_OR_AGG 또는 다른 비트맵 함수가 반환한 비트맵이에요.
bucket_number
선택 사항이에요. (BITMAP_BUCKET_NUMBER의) 버킷 번호예요. 지정하면 비트 위치가 주어진 버킷 번호를 사용해 절대 위치로 변환돼요. 기본값은 1이에요.
반환 값
설정된 비트의 위치를 나타내는 INTEGER 값의 ARRAY예요.
예시
계층 집계를 위한 비트맵으로 고유 값 계산을 참고하세요.
CREATE OR REPLACE TABLE events (user_id INT, value INT);
INSERT INTO events VALUES
(1, 1), (1, 5), (1, 100),
(2, 5), (2, 100), (2, 50000),
(3, 1), (3, 2), (3, 3), (3, 5);
CREATE OR REPLACE TABLE user_bitmaps AS
SELECT
user_id,
BITMAP_BUCKET_NUMBER(value) AS bucket,
BITMAP_CONSTRUCT_AGG(BITMAP_BIT_POSITION(value)) AS bmp
FROM events
GROUP BY user_id, bucket;
SELECT user_id, bucket, bitmap_to_array(bmp, bucket)
FROM user_bitmaps
ORDER BY user_id;
+---------+--------+------------------------------+
| USER_ID | BUCKET | BITMAP_TO_ARRAY(BMP, BUCKET) |
+---------+--------+------------------------------+
| 1 | 1 | [ 1, 5, 100 ] |
| 2 | 1 | [ 5, 100 ] |
| 2 | 2 | [ 50000 ] |
| 3 | 1 | [ 1, 2, 3, 5 ] |
+---------+--------+------------------------------+