# STRUCT

STRUCT는 각각의 데이터 타입이 존재하며 데이터별로 이름이 있는(선택 사항) 데이터 저장소입니다. 배열과 자주 쓰이며, 모든 데이터베이스에 엔진에 존재하진 않습니다.

꺾쇠 괄호를 사용해 정의합니다. 보통 Firebase, Google Analytics 4 데이터를 사용할 때 접하는 자료형이며, 엄청 많이 사용되진 않습니다.

  • 소괄호 사용
  • STRUCT<INT64, STRING> : 필드 이름이 없는 경우
  • STRUCT<id INT64, name STRING> : 필드 이름이 있는 경우
SELECT 
  (1,2,3) AS struct_test1,
  STRUCT<INT64, INT64, STRING>(1, 2, 'HI') AS struct_test2,
  STRUCT<hi INT64, hello INT64, awesome STRING>(1, 2, 'HI') AS struct_test3

첫 struct_test1은 이름을 지정하지 않아서 struct_test1._field_1로 나타나고, 이름을 지정한 struct_test3은 struct_test3.hello로 나타납니다.



WITH locations AS (
  SELECT 
    STRUCT("Seattle" AS city, "Washington" AS state) AS location
  UNION ALL
  SELECT 
    STRUCT("Phoenix" AS city, "Arizona" AS state) AS location
)
  
SELECT 
  l.location.*
FROM locations as l

그 외 더 자세한 내용은 BigQuery UNNEST, ARRAY, STRUCT 사용 방법 (opens new window) 글을 추천합니다