목차
1. ARRAY
2. STRUCT
3. ARRAY와 STRUCT 관계
4. UNNEST
1. ARRAY
✅Array(배열)
- 자료형 중 하나
- 같은 타입의 여러 값을 하나의 컬럼에 저장할 수 있는 자료형
- [1, 3, 5, 6]
- 저장 용량 효율적
✅생성하기
- [] 사용
- ARRAY<자료형>[데이터]
- 배열 생성 함수
- ARRAY_AGG 함수 : 여러 결과를 마지막에 배열로 저장하고 싶은 경우
✅ARRAY(배열)의 데이터 접근하기
- SAFE_OFFSET/OFFSET : 0부터 시작
- ORDINAL : 1부터 시작
- 단, 배열의 길이보다 큰 값 지정하면 오류 발생 : 방지위해 'SAFE_' 항상 추가
2. STRUCT
✅STRUCT(구조체)
- 자료형 중 하나
- 서로 다른 타입의 여러 값을 하나의 컬럼에 저장할 수 있는 자료형
=> Array는 파이썬의 list 형태, STRUCT는 파이썬의 dict 형태
=> Array는 메뉴판의 메뉴명들, STRUCT는 주소록(이름, 전화번호, 이메일 주소 등 자료형이 모두 다름)
✅생성하기
- () 사용
- STRUCT<자료형>(데이터)
✅STRUCT 접근하기
- STRUCT의 이름.key
3. ARRAY, STRUCT 관계
- ARRAY 안에 STRUCT가 저장되고 STRUCT 안에 ARRAY가 저장될 수 있음(2*2 -> 4가지 경우 모두 가능)
- 유연하게 데이터를 저장할 수 있음(중첩 구조)
4. UNNEST
✅UNNEST를 사용해 중첩된 데이터 구조 풀기(평면화, Flatten)
- 배열을 직접적으로 접근해 사용하는 것보다, 독립적인 행으로 풀어서(평면화) 사용
- ARRAY의 요소를 독립적인 행으로 펼칠 때 UNNEST 사용
- 장바구니(배열)에 있는 과일(배열 값)을 모두 다 꺼내는 것 = UNNEST
SELECT
col1, unnset_col2, col3
FROM example_data
CROSS JOIN UNNEST(col2) AS unnset_col2
👉참고링크
https://zzsza.github.io/gcp/2020/04/12/bigquery-unnest-array-struct/
https://datarian.io/blog/flattening-data-with-google-bigquery-unnest