ARRAY_SIZE

ARRAY_SIZE

ARRAY_SIZE는 입력 배열의 크기를 반환하는 반자 구조 데이터 함수예요. ARRAY_SIZE의 변형은 VARIANT 값을 입력으로 받아, VARIANT 값이 배열을 포함하면 배열의 크기를 반환하고 배열이 아니면 NULL을 반환해요.

출처: Snowflake SQL Reference

본문

카테고리: 반자 구조·정형 데이터 함수 (Array/Object)

구문 (Syntax)

ARRAY_SIZE( <array> )

ARRAY_SIZE( <variant> )

반환값 (Returns)

반환되는 값의 데이터 타입은 INTEGER예요.

사용 시 유의사항 (Usage notes)

  • ARRAY 값을 입력으로 받아 배열의 크기(즉 가장 큰 인덱스 + 1)를 반환해요. 배열이 희소(sparse) 배열이면, 크기에 정의된 요소뿐 아니라 정의되지 않은 요소도 포함된다는 뜻이에요.
  • NULL 인자는 결과로 NULL을 반환해요.

예시 (Examples)

간단한 예시예요:

SELECT ARRAY_SIZE(ARRAY_CONSTRUCT(1, 2, 3)) AS SIZE;
+------+
| SIZE |
|------|
|    3 |
+------+

이번에는 VARIANT 데이터 타입을 사용한 약간 더 복잡한 예시예요:

CREATE OR replace TABLE colors (v variant);

INSERT INTO
   colors
   SELECT
      parse_json(column1) AS v
   FROM
   VALUES
    ('[{r:255,g:12,b:0},{r:0,g:255,b:0},{r:0,g:0,b:255}]'),
    ('[{r:255,g:128,b:0},{r:128,g:255,b:0},{r:0,g:255,b:128},{r:0,g:128,b:255},{r:128,g:0,b:255},{r:255,g:0,b:128}]')
    v;

VARIANT 열의 각 배열에 대한 크기를 가져와요:

SELECT ARRAY_SIZE(v) from colors;
+---------------+
| ARRAY_SIZE(V) |
|---------------|
|             3 |
|             6 |
+---------------+

VARIANT 열의 각 배열의 마지막 요소를 가져와요:

SELECT GET(v, ARRAY_SIZE(v)-1) FROM colors;
+-------------------------+
| GET(V, ARRAY_SIZE(V)-1) |
|-------------------------|
| {                       |
|   "b": 255,             |
|   "g": 0,               |
|   "r": 0                |
| }                       |
| {                       |
|   "b": 128,             |
|   "g": 0,               |
|   "r": 255              |
| }                       |
+-------------------------+

더 알아보기