GA4Query

お問い合わせ

[GA4+BigQuery] エンゲージメントセッション数を集計するSQLクエリ

公開日:2022年12月15日
更新日:2022年12月15日
エンゲージメントセッション数を集計するSQLクエリ

本記事では、BigQueryにエクスポートしたGA4データを用いて、エンゲージメントセッション数(エンゲージのあったセッション数)を集計するSQLクエリについて解説をおこなう。

※ 執筆時点においてGoogleのアナリティクスヘルプでは「エンゲージメント セッション」、GA4の標準レポート及び探索画面では「エンゲージのあったセッション」と表記されていて、名称が完全に定まっていないように思われる。

SQLクエリ概要

まずevent_params 内にあるsession_engeged パラメータを使用し、 session_engaged = ‘1’ となった場合にエンゲージメントセッションが発生したとみなす。

ただ、エンゲージメントセッションがあったことを表す「1」は数値ではなく文字列なので注意が必要である(event_params.value.string_value に格納されている)。

セッション数の集計方法に関する詳しい説明はこちらの記事を参照されたい。

また、event_params内のパラメータを取り出す方法に関する詳しい説明はこちらの記事を参照されたい。

SQLクエリサンプル①

今回のクエリサンプルは2つある。まず1つ目のクエリから見ていこう。

WITH prep AS (
  SELECT
    event_date,
    user_pseudo_id,
    (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id') AS ga_session_id,
    (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'session_engaged') AS session_engaged_flag
  FROM
    `technogram-354804.analytics_291973511.events_intraday_202210*`
)

SELECT
  event_date,
  COUNT(DISTINCT CASE WHEN session_engaged_flag = '1' THEN CONCAT(user_pseudo_id, ga_session_id) END) AS engaged_session_count
FROM
  prep
GROUP BY
  event_date
ORDER BY
  event_date
;

SQLクエリサンプル②

続いて2つ目のクエリサンプルを見ていこう。

WITH prep AS (
  SELECT
    event_date,
    user_pseudo_id,
    (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id') AS ga_session_id,
    MAX((SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'session_engaged')) AS session_engaged_flag
  FROM
    `technogram-354804.analytics_291973511.events_intraday_202210*`
  GROUP BY
    event_date,
    user_pseudo_id,
    ga_session_id
)

SELECT
  event_date,
  COUNTIF(session_engaged_flag = '1') AS engaged_session_count
FROM
  prep
GROUP BY
  event_date
ORDER BY
  event_date
;

■ BigQueryでの集計結果

BigQueryでの集計結果は、以下のようになった。

■ GA4(Googleアナリティクス4)探索画面での集計結果

続いて、GA4での探索画面での集計結果は、以下のようになった。

BigQueryでの集計結果とGA4探索画面での集計結果には微妙な差異が発生していることがわかる。

Googleのアナリティクスへルプにおいて、GA4の探索画面を用いた集計とBigQueryにエクスポートしたデータのSQL集計では結果に差異が生じる可能性があるとの記載があるので、両者の数値が一致しないことに対してそこまで神経質になる必要性はないと思われるが、引き続き調査を継続し、新しい発見があったら本記事の更新を随時おこなっていく予定である。

BigQuery には効率的な計算方法が適用されないため、BigQuery の計算結果と、標準レポート、カスタム レポート、データ探索ツール、Looker Studio の計算結果にはわずかな差異が生じることがあります。

データを確認する方法を選ぶ際は、次のヒントを参考にしてください。

  • 元データからより正確な結果を取得したい場合は、BigQuery で結果を確認してください。
  • より効率的に結果を取得したい場合は、標準レポート、カスタム レポート、データ探索ツール、Looker Studio で結果を確認してください。

(出典)

https://support.google.com/firebase/answer/9191807

また関連記事として、以下の記事も参考にされたい。

この記事の執筆者

Akifumi Watanabe

Webディレクター・上級Web解析士。 Google Analytics Certification保有。 GA4Queryの記事作成担当。 Web分析を活かした制作ディレクションを中心に行う。 元制作者の目線を活かしweb改善に取り組む。