빅쿼리(BigQuery) UNNEST 함수 사용법 3가지

빅쿼리는 기존의 RDBMS와 다른 데이터 구조를 가지고 있습니다. 그래서 처음 사용하는 사람들은 ARRAY<STRUCT> 이런 식의 에러 메세지를 자주 보게 됩니다. 이 문제를 해결하는 UNNEST()함수의 세가지 사용방법을 알아보겠습니다. 

  • 빅쿼리를 처음 쓰는 사람들에게 멘붕을 주는 에러 메세지입니다.
빅쿼리(BigQuery) array, struct 에러 메세지

  • RDBMS가 익숙한 사람들이 생각하는 빅쿼리 데이터 
사진 출처 : Todd Kerpelman 블로그
  • 실제 빅쿼리 데이터 모습
사진 출처 : Todd Kerpelman 블로그
  • 빅쿼리의 샘플 GA 데이터 구조. 바로 아래 그림은 2행(row)에 들어있는 데이터 (GA는 한 세션 데이터가 하나의 행(row)

  • totals 필드는 RECORD 타입이며, totals.visits, totlas.hits와 같은 자식들을 가집니다. (nested 구조 = struct)   빅쿼리의 array & strct 타입 완전 정복하기(클릭)

  • 아래의 쿼리를 날리면 에러가 뜹니다. record 타입를 가진 필드가 repeated 모드(array) 까지 있어서 hits의 자식인 hits.page 필드는 select 쿼리가 안됩니다. struct 타입 + array 타입



빅쿼리(BigQuery) array, struct 에러 메세지
  • CROSS JOIN UNNEST 함수로 해결할 수 있습니다. 한 개의 행에 들어있던 여러 데이터가 각각의 행으로 풀어집니다.
빅쿼리(BigQuery) UNNEST 함수 사용 방법 세가지

  • CROSS JOIN 부분을 콤마(,)로 대신 할 수 있습니다.
빅쿼리(BigQuery) UNNEST 함수 사용 방법 세가지
  • 아래와 같이 더 짧게 사용할 수도 있습니다. 
빅쿼리(BigQuery) UNNEST 함수 사용 방법 세가지
  • 소스 (빅쿼리 퍼블릭 데이터라서 누구든 쉽게 무료로 쿼리하실 수 있습니다. 매달 1TB 무료, 캐글(Kaggle)에선 매달 5TB 무료)  

Comments