SPLIT_TO_TABLE

SPLIT_TO_TABLE

문자열을 지정한 구분자로 나누고 결과를 행으로 평탄화(flatten)하는 테이블 함수예요. 구분자로 구분된 값이 든 문자열을 개별 행으로 펼치고 싶을 때 씁니다.

출처: Snowflake SQL Reference

본문

SPLIT_TO_TABLE(<string>, <delimiter>)
  • string — 분할할 텍스트.
  • delimiter — 문자열을 나누는 기준이 될 텍스트.

함수는 다음 컬럼을 반환해요.

Column name Data type Description
SEQ NUMBER 입력 레코드와 연결된 고유 시퀀스 번호. 연속적이거나 정렬된 순서를 보장하지는 않아요
INDEX NUMBER 요소의 1부터 시작하는 인덱스
VALUE VARCHAR 평탄화된 배열 요소의 값

쿼리는 원본(상관) 테이블의 컬럼에도 접근할 수 있어요. 원본의 한 행이 평탄화 뷰에서 여러 행이 되면, 입력 행의 값은 함수가 만든 행 수만큼 복제돼요.

예시 — 상수 입력에 대한 간단한 예:

SELECT table1.value
  FROM TABLE(SPLIT_TO_TABLE('a.b', '.')) AS table1
  ORDER BY table1.value;
+-------+
| VALUE |
|-------|
| a     |
| b     |
+-------+

LATERAL 키워드와 함께 쓰면 splittable 테이블의 각 행에 대해 함수가 상관 테이블처럼 실행돼요.

SELECT *
  FROM splittable, LATERAL SPLIT_TO_TABLE(splittable.v, '.')
  ORDER BY SEQ, INDEX;
+-------+-----+-------+-------+
| V     | SEQ | INDEX | VALUE |
|-------+-----+-------+-------|
| a.b.c |   1 |     1 | a     |
| a.b.c |   1 |     2 | b     |
| a.b.c |   1 |     3 | c     |
| d     |   2 |     1 | d     |
|       |   3 |     1 |       |
+-------+-----+-------+-------+

더 알아보기 (Learn more)