Google Analytics(구글 애널리틱스) 데이터를 빅쿼리에 적재했다가 로컬에 다운로드 받으려고 할 때 익숙한 CSV 포맷으로 다운받기를 시도하실텐데요. 막상 버튼을 클릭하고 기다려도 아무런 반응이 없습니다.
Google Analytics (이하 GA) 데이터는 중첩 및 반복되는 데이터입니다. STRUCT(nested) 구조와 배열(array / repeated) 구조를 가졌습니다. 그래서 CSV로 다운받을 수 없습니다.
Struct(중첩, nested)과 Array(배열, repeated) 타입 완전 정복 (click)
구글 공식 문서에 따르면 중첩/반복 데이터는 CSV 형식으로 내보낼 수 없고 그 쿼리 결과 또한 CSV 형식으로 다운로드 할 수 없습니다.
 |
중첩/반복되는 데이터는 CSV 형식으로 내보낼 수 없음 |
 |
쿼리 결과에 중첩/반복되는 데이터가 있으면 CSV로 다운할 수 없음 |
* 다시 요약하면, 중첩/반복되는 데이터를 가진 빅쿼리 테이블에서 다른데로 export 할 때나 중첩/반복되는 데이터를 가진 빅쿼리 테이블을 쿼리한 결과를 다운로드 받으려고 할 때 CSV 형식으로는 불가능합니다.
- 중첩/반복되는 데이터가 아니면 보통 테이블을 내보내기(export) 할 때 아래와 같이 CSV 선택이 가능합니다.
- 하지만 중첩/반복 데이터를 가진 테이블은 내보내기(export) 할 때 아래와 같이 CSV를 제외한 데이터 포맷만 선택됩니다.
 |
반복/중첩 데이터를 가진 GA 샘플 데이터 테이블을 내보내기 하려고 하면 |
 |
CSV는 선택 자체가 불가능함 |
- GA 퍼블릭 샘플 데이터를 쿼리해서 로컬에 CSV로 저장하려고 하면 아무런 반응이 없습니다. 아무 메세지가 뜨지 않아서 원인도 모른채 계속 삽질하게 됩니다. 빅쿼리가 느린가? 내 로컬 컴퓨터가 느린가? 내 네트워크 대역폭을 누가 뺏어쓰고 있나? 여러 생각이 다 들게 됩니다.
 |
GA 샘플 데이터 쿼리하고 결과 저장 클릭 |
 |
CSV 로컬 파일 선택하고 나면 아무런 반응이 없음 |
- CSV 구글 드라이브를 선택해서 쿼리 결과를 저장하려고 하면 드디어 에러메세지를 확인할 수 있고 이제서야 원인을 알게 됩니다.
 |
구글 드라이브 CSV 로 선택 |
 |
nested schema (중첩 스키마) 때문에 안된다고 함 |
사실 "중첩/반복 데이터 테이블은 CSV로 안되니 JSON 이나 Avro 형식으로 작업하세요" 라고 하면 끝이지만 그러면 내가 블로그에 쓸 내용이 없잖아요. 같이 먹고 삽시다. ㅇㅋ?
그럼 지난 시간에 배운 bq extract 명령어로 json 형식으로 보내려면 어떻게 하면 될까요?
- bq extract 만 그냥 쓰면 에러가 뜹니다. nested schema에 작업 못한다고 합니다.
- destination_format 플래그를 사용해 NEWLINE_DELIMITED_JSON 형식으로 설정하면 됩니다.
Comments
Post a Comment