1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CYBIRD Advent Calendar 2024Advent Calendar 2024

Day 8

Firebaseイベントの登録からBigQueryでのデータ取得まで

Last updated at Posted at 2024-12-07

はじめに

CYBIRD Advent Calendar 2024 の8日目担当の@kyorokyoroです。
クライアントエンジニアとして開発/運用を担当しております。
7日目は@shiso_cさんの「Unity1Weekで使う時短のためのあれこれ」でした。

概要

アプリ内でユーザーが実行するアクションの中で、サーバーとの通信を伴わないものも多くあります。
例えば、ストーリーを読んだり、特定の画面に遷移したりするユーザーの行動は、直接的なサーバー通信なしで完結します。
しかし、これらの行動もアプリの利用状況を把握するために重要です。

Firebase Analyticsを活用することで、こうしたユーザーの行動をアプリ内で記録し、後でデータ分析に利用することができます。
具体的には、通信を介さないアクションを記録するために、イベントとしてFirebaseにログを送信し、それをBigQueryで分析する方法を取り上げます。

この記事では、Firebaseを用いてユーザーの行動(例: ストーリーの再生)を記録し、BigQueryでそのデータを集計する方法を解説します。

1. Firebaseでのイベント登録

Firebaseでイベントを登録することで、ユーザーのアクションをトラッキングし、後で分析することができます。イベント登録は、Firebase SDKを使って行います。

1-1. イベントの登録方法

Firebase Analyticsを利用して、アプリ内で発生したイベントを記録します。
たとえば、ユーザーが特定のストーリーを読んだ際に、そのイベントを記録する方法です。

var parameters = new Parameter[]
{
    new Parameter("story_cd", "xxx")
};
Firebase.Analytics.FirebaseAnalytics.LogEvent("story_read", parameters);

2. BigQueryからのイベントデータ取得(条件付き)

FirebaseとBigQueryを連携させることで、Firebaseで収集したイベントデータをBigQueryで分析できます。
以下は、特定の条件に基づいたデータ取得方法です。

2-1. ユーザー数の取得

1. 日付をまたいだイベント実行をしたユニークユーザー数の取得

指定された条件でユニークユーザー数を取得するクエリです。

SELECT
  COUNT(DISTINCT user_pseudo_id) AS unique_users
FROM
  `project_id.analytics_XXXXXXXXX.events_*`,
  UNNEST(event_params) AS event_param
WHERE
  event_name = 'story_read'
  AND event_param.key = 'story_cd'
  AND event_param.value.string_value = 'xxx'
  AND _TABLE_SUFFIX BETWEEN '20241201' AND '20241207'  -- 日付範囲を指定

2. リピートユーザー数の取得

リピートユーザー数を取得するために、同じユーザーが複数回指定された条件でイベントを実行したかを確認する方法です。

WITH user_event_count AS (
  SELECT
    user_pseudo_id,
    COUNT(*) AS event_count
  FROM
    `project_id.analytics_XXXXXXXXX.events_*`,
    UNNEST(event_params) AS event_param
  WHERE
    event_name = 'story_read'
    AND event_param.key = 'story_cd'
    AND event_param.value.string_value = 'xxx'
    AND _TABLE_SUFFIX BETWEEN '20241201' AND '20241207'
  GROUP BY
    user_pseudo_id
)
SELECT
  COUNT(*) AS repeat_users
FROM
  user_event_count
WHERE
  event_count > 1

3. 日別のイベント数の取得

日別での集計に関しても、同じ条件を適用した集計方法です。
指定された条件に基づき、イベントが発生した日ごとに、その回数をカウントします。

SELECT
  event_date,
  COUNT(*) AS event_count
FROM
  `project_id.analytics_XXXXXXXXX.events_*`,
  UNNEST(event_params) AS event_param
WHERE
  event_name = 'story_read'
  AND event_param.key = 'story_cd'
  AND event_param.value.string_value = 'xxx'
  AND _TABLE_SUFFIX BETWEEN '20241201' AND '20241207'
GROUP BY
  event_date
ORDER BY
  event_date

3. まとめ

この記事では、Firebaseでのイベント登録方法から、BigQueryでのデータ取得方法までを解説しました。
特定の条件に基づいてデータを集計することで、ユーザーの行動を詳細に分析することが可能です。

  • Firebaseイベントの登録方法(story_readイベントの例)
  • BigQueryを使用して、特定の条件(story_cd = 'xxx')に基づくユニークユーザー数、リピートユーザー数、日別イベント数の取得方法

状況に応じてクエリを調整し、アプリのデータ集計に役立ててください。

明日のCYBIRD Advent Calendar 2024 9日目は、@CN_30371500さんの「コンピューターの思考」です。
お楽しみに!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?