データ分析関連メモ(メモです)

仲秋の候、涼やかな秋風の下、ご一同様にはその後お健やかにお過ごしのことと存じます。

GoogleAnalytics入門 with R 中編 ~BigQuery連携データについて~

f:id:watagusa:20210619144223p:plain

GoogleAnalyticsのBigQuery連携についての紹介記事。
勉強会で発表したものを文字にした記事で、元のスライドはこちら。
Introduction_of_GoogleAnalytics_with_R - Speaker Deck

GoogleAnalyticsそのものについてはこちら。

アップデートによるBigQuery連携無償化

GUIで確認できるGoogleAnalyticsデータはすでに集計されたもので、場合によってはサンプリングがかかる。APIを利用して得られるデータも同様に集計されており、rawデータの取得するには有料版の契約が必須になっていた。

しかし、2020年10月に行われたGoogleAnalyticsのアップデートにより無償版でもBigQuery連携が可能になった。正確に言うとこれまでのUniversalAnalyticsに加えて、新版のGoogleAnalytics4というもの(プロパティと呼ばれる)が使えるようになった。

f:id:watagusa:20210619164020p:plain

BigQuery連携手順

連携の設定はGUI上でできる。GoogleAnalytics4のプロパティでしかできないので注意。
連携の頻度はdailyとstreamingから選択する。両方、というのも可能。
Googleアナリティクス4のデータをBigQuery出力する | marketechlabo

f:id:watagusa:20210619165345p:plain

 

連携の設定が終わって、翌日からBigQueryにデータセットとテーブルが作成される。
データセットは「analytics_xxxx」という名称で「xxxx」部分にIDのようなものが入る。このデータセット配下に日次でテーブルが追加されていく。テーブル名は「events_YYYYMMDD」の形。いわゆるシャーディングになる。streamingの場合はこれらとは別に「events_intraday_YYYYMMDD」というテーブルができる。
shardingとpartitioningの違いは?【分散データベース】 - CTOの日記

f:id:watagusa:20210619172050p:plain

連携データの内容

連携されたデータはネストされた状態。
BigQuery Export のスキーマ - Firebase ヘルプ

f:id:watagusa:20210619172826p:plain

 

列がたくさんあるが「いつ」「何をした」「誰が」の3つを中心に見ると掴みやすい。

いつ

 ・event_timestamp……ミリ秒単位のUTC日付や時刻は「UTC ミリ秒値で表される現在時刻」で扱うのが便利
  ・event_date……event_timestampをGoogleAnalyticsで登録されたタイムゾーンに合わせてYYYYMMDDの形に変換されたもの。

誰が

 ・user_pseudo_id……ユーザーの仮のID。Webサイトであればcookie単位で発行される。

何をした

 ・event_name……ユーザーが何をしたのか。page_view、scroll、clickなど。
 ・event_params……行動の詳細。その行動が起こったページ、行動が起こったセッションのIDなど。

f:id:watagusa:20210620150033p:plain

 eventの構成

ユーザーが「何をしたのか」を表す列には「event」という名称がついている。これはGoogleAnalytics4が計測をしている最小単位で、ユーザーの1つ1つの行動を指す。
「いつ」「誰が」と並んで重要な列だが、ネストしているため扱いづらい。
イメージとしてはこんな感じ。

f:id:watagusa:20210620152218p:plain

 

event_nameはユーザーが何をしたのか。今回はWebサイトの計測を想定しているが、GoogleAnalytics4はアプリの計測にも使用でき、Webサイトなのかアプリなのかでevent_nameに入る値は異なる。
以下のページにeventの一覧が載っている。
[GA4] Automatically collected events - Analytics Help

f:id:watagusa:20210620152631p:plain

 

event_params.keyには、そのeventのどんな詳細情報なのかを表す文字列が入る。event_params.value.string_valueには具体的な文字列の詳細情報、event_prams.value.int_valueには整数値の情報が入る。

例えばpage_title(ページ名)やpage_location(URL)のように、文字列の値を取るような詳細情報は以下のように格納されている。

f:id:watagusa:20210620153439p:plain

対して、ga_session_id(セッションに振られるID)など整数値を取る場合は、event_params.value.int_valueに格納される。

f:id:watagusa:20210620153834p:plain

eventの具体例

サイト内検索結果を表すview_search_resultsを例にとって、内容を解釈する。

f:id:watagusa:20210620163027p:plain

 

まずはevent_nameからユーザーがとった行動を読む。この場合はview_search_resultsとあるので検索結果を表示したということ。
event_nameのどれが何を意味するのかは上でも紹介した公式ページを参照する。
[GA4] Automatically collected events - Analytics Help

f:id:watagusa:20210620162606p:plain

 

サイト内検索をした結果どのURLにユーザーがいるのか確認したい場合、event_params.keyがpage_locationの部分を見にいく。page_locationを発見したら右のevent_params.valueで具体的にどのURLかを確認する。int_valueやstring_valueなどがあるが、URLは文字列の値なのでstring_valueにのみ探している値が格納されていて、int_valueなどはNULLになっている。

f:id:watagusa:20210620163815p:plain

 

検索に使用した文字列はevent_params.keyがsearch_termとなっている部分のvalueを見にいく。

f:id:watagusa:20210620164041p:plain

ga_session_idのように整数値がはいるevent_params.keyの場合は、int_valueを見にいけば良い。

 

 

次回はセッション数をR言語で集計してみる回。