데이터베이스/SQL

[BigQuery] 중첩된 필드 조회 (event_params.key.value)

sseozytank 2023. 1. 19.

맨날 postgresql이나 MySQL만 쓰다가 빅쿼리를 처음 써보니 생소한 데이터 형식에 쿼리를 치자마자 오류를 만날 수 있었다. 

난 단지 이걸 불러오고 싶어서 단순히 저걸 셀렉트해왔지.. 하지만 GA의 데이터 구조는 약간 달라서 쿼리가 실행되지 않았다 ㅜㅜ 

 

SELECT event_params.value.string_value FROM `dataset.tablename.events_20230118` LIMIT 1000

GA는 다음과 같이 계층형 구조로 이루어져있어서,위처럼  쿼리를 날리면 위같은 에러가 뜬다 . record 타입를 가진 필드가 repeated 모드(array) 까지 있어서 hits의 자식인 hits.page 필드는 select 쿼리가 안된다.  struct 타입 + array 타입

(인용 : https://cookiethecat2020.blogspot.com/2020/06/bigquery-unnest-3.html

 

 

 

사진 출처 : Todd Kerpelman 블로그

 

 

UNNEST를 통해 SELECT 를 해주면 원하는 부분만 뽑아올 수 있다. 

UNNEST와 크로스조인 (,로 대신 가능)을 통해 해결가능하다.  아래처럼 쿼리를 작성하면 해당 데이터 조회가 가능하다!!!!!! 

SELECT event_name,user_id,h.value.string_value
FROM `테이블명`,UNNEST(event_params) as h
LIMIT 1000

댓글