Google Analytics4 (GA4)와 연동된 BigQuery 데이터 파일 이벤트별 속성들을 모아보기 (pyspark 버전)

Google Analytics가 Universal Analytics(UA, GA3)에서 GA4로 변경되면서 강조하는 특징 중
제가 가장 관심을 갖고 있는 부분은 GA4의 데이터를 Google Cloud Platform(GCP)의 BigQuery에 전달가능하다라는 것입니다.

빅쿼리를 이용하면
대용량 데이터를 SQL로 핸들링 할 수 있으며 이벤트 단위로 저장되기 때문에
GA/Data Studio에서는 제공되는 지표(dimension, metrics)보다 좀 더 세밀한 분석이 가능하게 되었습니다.

저도 경험해볼겸 간단한 사이트를 제작한 후
GA->BigQuery->Parquet 파일생성->개인클러스터에 적재
과정을 통해 데이터를 수집해보고 있는데요.
이 글에서는 이 데이터를 가볍게 살펴보려 합니다.

ga_df = spark.read.parquet("hdfs://airguy_ga4_bigquery/log_date=*")
ga_df.printSchema()
…. (나머지는 너무 길어서 생략)

nested된 속성(event_params 등)을 보면 key에 따라 int, float등 다양한 속성의 value로 구성되어 있는 특성이 있네요.
https://support.google.com/analytics/answer/9234069를 보면 event_name에 따라 어떤 event_params들이 생성되는지 안내가 있는데요. 실제 그런지 확인해 보겠습니다.

#nested된 event params을 여러 line으로 풀어놓습니다.
test_df = ga_df.select("event_name", F.explode("event_params").alias('event_params')).select('event_name', 'event_params.key')
#풀어진 것을 event_name 단위로 집계하면서 몇 개의 속성이 있는지 목록을 작성합니다.
res_df = test_df.groupBy("event_name").agg(F.collect_set("key").alias("params"), F.countDistinct("key").alias("key_kind_cnt"), F.count("key").alias("cnt"))

#많이 생성되는 상위 5개의 event만 조회합니다.
res_df.select('event_name', 'params').sort(F.col('cnt').desc()).show(n=5, truncate=False)

event_name에 해당되는 event_params의 key 목록들이 잘 모아진 것 같습니다.
이런 메타정보를 모아두면 어떤 속성을 어디에서 찾아야 하나 바로 찾을 수 있다보니 처음 접하는 데이터를 분석할때 이러한 유형의 프로파일링 정보를 같이 수집하는 편 입니다.

이것 저것 살펴보니 BigQuery에는 가장 세밀한 구분인 이벤트 단위로 데이터가 수집되어 GA4를 활용하면서 궁금하던 부분을 좀 더 deep dive하며 분석할 수 있게 되었습니다.
이 다음 글에서는 이 데이터를 이용하여 간단한 분석을 수행해 보겠습니다.

이 모든 것을 무료로 활용할 수 있다니 구글 참 대단하네요!!!!