[Bigquery] GCP 탐색

빅쿼리 스터디 시작~
Jul 12, 2023
[Bigquery] GCP 탐색
🔥
문제풀이 형태로 진행하고 있었던 타임어택 SQL 스터디를 빅쿼리 스터디로 전환하기로 했다. 우리의 next 목표는 7월안에 <구글 빅쿼리 완벽 가이드> 책을 끝내고, 당당하게 GCP 이해도 높음을 이력서에 어필하는 것이다. Google Analytics4, Firebase 예시 데이터셋을 위주로 뜯어보고 실제 서비스의 로그 데이터를 분석할 때, 어떤 쿼리문을 작성하면 좋을지를 위주로 연습하려고 한다.
 

GCP를 공부해야하는 이유

  • Appsflyer, Adjust 등의 어트리뷰션 툴 또는 Google Analytics, Firebase, BigQuery 등의 로그분석 툴을 사용한 경험이 있는 분 (마이리얼트립 DA공고)
  • SQL(Bigquery, Mysql, Redshift 등), Python(Pandas), R, Excel 등을 활용한 데이터 분석이 가능한 분 (콴다 DA공고)
 

어떻게 효율적으로 공부할까

  • coursera 강의 (월$9.99~)
  • 카일스쿨님 핸드북 (기본적인 내용만 있음)
  • 빅쿼리 SQL 그 이상의 기능 탐색 + 고급 SQL - starts from here
 

dataset <flood it!> - 일단 샘플 데이터셋부터 뜯어보쟈!

내가 준비한 세션 : 빅쿼리에 쿼리를 날려보기/결과값 확인하기/ looker studio&colab 연결해서 시각화하기/ firebase 데이터셋 구조(event property, user property란?), 데이터타입(array, struct)
  • 게임앱 데이터셋 (가상)
 
  • data schema
 
  • 따라서 쿼리를 쳐보자!
 
  • 빅쿼리 document와 친해져야해!
 
  • google analytics, firebase의 독특한 데이터타입을 공부해보자!
 
CREATE { TEMPORARY | TEMP } FUNCTION function_name ([named_parameter[, ...]]) [RETURNS data_type] AS (function_definition);
# UDF for event parameters CREATE TEMP FUNCTION paramValueByKey(k STRING, params ARRAY<STRUCT<key STRING, value STRUCT<string_value STRING, int_value INT64, float_value FLOAT64, double_value FLOAT64 >>>) AS ( (SELECT x.value FROM UNNEST(params) x WHERE x.key=k) ); # UDF for user properties CREATE TEMP FUNCTION propertyValueByKey(k STRING, properties ARRAY<STRUCT<key STRING, value STRUCT<string_value STRING, int_value INT64, float_value FLOAT64, double_value FLOAT64, set_timestamp_micros INT64 >>>) AS ( (SELECT x.value FROM UNNEST(properties) x WHERE x.key=k) ); SELECT user_pseudo_id, event_name, event_timestamp, propertyValueByKey('num_levels_available', user_properties).string_value AS num_levels_available, paramValueByKey('board', event_params).string_value AS board, paramValueByKey('firebase_screen_class', event_params).string_value as firebase_screen_class from `firebase-public-project.analytics_153293282.events_20181003` LIMIT 10
 

빅쿼리란?

  • 쿼리엔진이 내장된 서버리스 서비스로 확장성이 높은 데이터 웨어하우스. 인프라 운영이 필요없음.
  • OLTP(Online Transaction Processing) 데이터베이스 like mysql, postgresql
    • 장점 : 데이터베이스 칼럼에서 raw데이터 뿐만 아니라 파싱, 집계, 필터링, 그룹화를 지원한다
    • 단점 : 애드혹 쿼리 실행에 적합하지 않음 (필요에 따라 성능이 떨어지더라도 즉석에서 작성해서 실행하는 쿼리)
  • 맵리듀스 프레임워크 : 효율적인 분산
  • 서비리스 : 기술적으로 부서간에 필요한 데이터를 서로 나누어 유연하게 협업이 가능함
  • 워크플로우와 구조
    • 워크플로우
      구조
      사용 케이스
      EL
      구글 클라우드 스토리지 파일에서 데이터 추출 빅쿼리 기본 스토리지에서 불러옴 클라우드 컴포저, 클라우드 펑션, 예약 쿼리에서 실행
      히스토리 데이터를 배치 단위에서 불러오는 경우, 정기적으로 로그 파일을 불러오는 경우
      ETL
      클라우드 데이터 플로우로 데이터 변환, 데이터플로우 파이프라인을 통해 빅쿼리 테이블에 저장
      원시 데이터를 빅쿼리에 불러오기 전 품질관리, 변환, 보강해야하는 경우 데이터 불러오기가 지속적으로 필요한 경우 스트리밍 CI/CD 시스템과 통합하고 모든 구성요소에서 장치 테스트를 수행하는 경우
      ELT
      구글 클라우드 스토리지의 파일에서 데이터 추출 원시형식으로 데이터 저장, 빅쿼리 뷰로 데이터를 즉시 변환
      데이터 사용시 어떤 종류의 변환이 필요한지 아직 모르는 실험 데이터셋
 

GCP의 다양한 제품들

notion image
  • Dataflow https://cloud.google.com/dataflow : 분산 데이터 처리 서비스. 데이터 처리 작업을 간단하게 구현하고 실행할 수 있는 플랫폼으로, 대규모 데이터셋을 처리하고 변환하는 데 사용됨
  • Pub/Sub : 실시간 메시지 전달 서비스. Pub/Sub은 Publisher(발행자)와 Subscriber(구독자) 간에 비동기적으로 메시지를 전달하는 메시징 시스템.
→ 데이터 엔지니어링 쪽은 아직 낯선 용어들이 많다! 이 쪽도 열심히 파봐야징
Share article

hollyisyoon