BITMAP_TO_ARRAY

BITMAP_TO_ARRAY (비트맵을 배열로)

입력 비트맵에서 설정된 모든 비트의 위치를 담은 ARRAY를 반환해요.

출처: Snowflake SQL Reference - BITMAP_TO_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 ]               |
+---------+--------+------------------------------+

더 알아보기