Firebase コンソールで A/B Testing のテストデータを表示するだけでなく、BigQuery でテストデータを検査して分析することもできます。A/B Testing に個別の BigQuery テーブルは含まれませんが、テストとバリアントのメンバーシップは Analytics イベント テーブル内のすべての Google Analytics イベントに保存されます。
テスト情報を含むユーザー プロパティは、userProperty.key like "firebase_exp_%"
または userProperty.key =
"firebase_exp_01"
の形式です。01
はテスト ID であり、userProperty.value.string_value
にはテスト バリアントの(ゼロから始まる)インデックスが含まれます。
これらのテスト ユーザー プロパティを使用すると、テストデータを抽出できます。これにより、さまざまな方法でテスト結果を分割し、A/B Testing の結果を個別に検証できます。
開始するには、このガイドの説明に沿って次の操作を行います。
- Firebase コンソールで Google Analytics の BigQuery エクスポートを有効にする
- BigQuery を使用して A/B Testing データにアクセスする
- クエリの例を確認する
Firebase コンソールで Google Analytics の BigQuery エクスポートを有効にする
Spark プランをご利用の場合は、BigQuery サンドボックスを使用して、サンドボックスの制限内で BigQuery に無料でアクセスできます。 詳細については、料金と BigQuery サンドボックスをご覧ください。
まず、Analytics データを BigQuery にエクスポートできるようにします。
- [統合] タブを開きます。このタブには、Firebase コンソールで、 > [>] を選択してアクセスできます。
- 他の Firebase サービスですでに BigQuery を使用している場合は、[管理] をクリックします。それ以外の場合は、[リンク] をクリックします。
- [Firebase の BigQuery へのリンクについて] を確認し、[次へ] をクリックします。
- [統合を構成する] セクションで、[Google Analytics] の切り替えボタンをオンにします。
リージョンを選択し、エクスポートの設定を選択します。
[BigQuery へのリンク] をクリックします。
データのエクスポート方法によっては、テーブルが使用可能になるまでに 1 日かかることがあります。BigQuery に対するプロジェクト データのエクスポートの詳細については、プロジェクト データを BigQuery にエクスポートするをご覧ください。
BigQuery の A/B Testing データにアクセスする
特定のテストのデータをクエリする前に、クエリで使用する次の一部またはすべてを取得することをおすすめします。
- テスト ID: [テストの概要] ページの URL から取得できます。たとえば、URL が
https://console.firebase.google.com/project/my_firebase_project/config/experiment/results/25
のような場合、テスト ID は 25 です。 - Google Analytics プロパティ ID: これは、9 桁の Google Analytics プロパティ ID です。Google Analytics 内で確認できます。プロジェクト名を展開して Google Analytics イベント テーブル(
project_name.analytics_000000000.events
)の名前を表示すると、BigQuery にも表示されます。 - テスト日: クエリをより短時間で、効率的に作成するには、クエリの対象を、テストデータ(接尾辞
YYYYMMDD
で識別されるテーブル)を含む Google Analytics の日別イベント テーブル パーティションに限定することをおすすめします。たとえば、テストを 2024 年 2 月 2 日から 2024 年 5 月 2 日まで実施した場合は、_TABLE_SUFFIX between '20240202' AND '20240502'
を指定します。例については、特定のテストの値を選択するをご覧ください。 - イベント名: 通常は、テストで構成した目標指標に対応しています。たとえば、
in_app_purchase
イベント、ad_impression
イベント、user_retention
イベントなどです。
クエリの生成に必要な情報を収集したら、次の操作を行います。
- Google Cloud コンソールで BigQuery を開きます。
- プロジェクトを選択し、[SQL クエリを作成] を選択します。
- クエリを追加します。実行するクエリの例については、クエリの例を確認するをご覧ください。
- [実行] をクリックします。
Firebase コンソールの自動生成クエリを使用してテストデータをクエリする
Blaze プランを使用している場合は、[テストの概要] ページに、表示しているテストのテスト名、バリアント、イベント名、イベント数を返すサンプルクエリが表示されます。
自動生成クエリを取得して実行するには:
- Firebase コンソールで [A/B Testing] を開き、クエリする A/B Testing テストを選択して、[テストの概要] を開きます。
- [オプション] メニューの [BigQuery との統合] で、[テストデータをクエリ] を選択します。これにより、Google Cloud コンソール内に BigQuery のプロジェクトが開き、テストデータのクエリに使用できる基本的なクエリが表示されます。
次の例は、「Winter welcome experiment」という 3 つのバリアント(ベースラインを含む)を使用したテストで生成されるクエリを示しています。アクティブなテスト名、バリアント名、ユニーク イベント、各イベントのイベント数が返されます。クエリビルダーはプロジェクト内で直接開かれるため、テーブル名の中でプロジェクト名が指定されることはありません。
/*
This query is auto-generated by Firebase A/B Testing for your
experiment "Winter welcome experiment".
It demonstrates how you can get event counts for all Analytics
events logged by each variant of this experiment's population.
*/
SELECT
'Winter welcome experiment' AS experimentName,
CASE userProperty.value.string_value
WHEN '0' THEN 'Baseline'
WHEN '1' THEN 'Welcome message (1)'
WHEN '2' THEN 'Welcome message (2)'
END AS experimentVariant,
event_name AS eventName,
COUNT(*) AS count
FROM
`analytics_000000000.events_*`,
UNNEST(user_properties) AS userProperty
WHERE
(_TABLE_SUFFIX BETWEEN '20240202' AND '20240502')
AND userProperty.key = 'firebase_exp_25'
GROUP BY
experimentVariant, eventName
その他のクエリの例については、クエリの例を確認するをご覧ください。
クエリの例を確認する
以下の各セクションでは、Google Analytics イベント テーブルから A/B Testing テストデータを抽出する際に使用できるクエリの例を示します。
すべてのテストから購入とテストの標準偏差値を抽出する
テスト結果のデータを使用して、Firebase A/B Testing の結果を個別に検証できます。次の BigQuery SQL ステートメントは、テスト バリアント、各バリアントのユニーク ユーザー数を抽出し、in_app_purchase
イベントと ecommerce_purchase
イベントの総収益、_TABLE_SUFFIX
の開始日と終了日として指定された期間内のすべてのテストの標準偏差を抽出します。このクエリから取得したデータを統計的有意性生成ツールで使用して、片側 t 検定を行うと、Firebase が提供する結果が独自の分析と一致することを確認できます。
A/B Testing による推論の計算方法の詳細については、テスト結果を解釈するをご覧ください。
/*
This query returns all experiment variants, number of unique users,
the average USD spent per user, and the standard deviation for all
experiments within the date range specified for _TABLE_SUFFIX.
*/
SELECT
experimentNumber,
experimentVariant,
COUNT(*) AS unique_users,
AVG(usd_value) AS usd_value_per_user,
STDDEV(usd_value) AS std_dev
FROM
(
SELECT
userProperty.key AS experimentNumber,
userProperty.value.string_value AS experimentVariant,
user_pseudo_id,
SUM(
CASE
WHEN event_name IN ('in_app_purchase', 'ecommerce_purchase')
THEN event_value_in_usd
ELSE 0
END) AS usd_value
FROM `PROJECT_NAME.analytics_ANALYTICS_ID.events_*`
CROSS JOIN UNNEST(user_properties) AS userProperty
WHERE
userProperty.key LIKE 'firebase_exp_%'
AND event_name IN ('in_app_purchase', 'ecommerce_purchase')
AND (_TABLE_SUFFIX BETWEEN 'YYYYMMDD' AND 'YYYMMDD')
GROUP BY 1, 2, 3
)
GROUP BY 1, 2
ORDER BY 1, 2;
特定のテストの値を選択する
次のサンプルクエリは、BigQuery で特定のテストのデータを取得する方法を示しています。このサンプルクエリは、テスト名、バリアント名(ベースラインを含む)、イベント名、イベント数を返します。
SELECT
'EXPERIMENT_NAME' AS experimentName,
CASE userProperty.value.string_value
WHEN '0' THEN 'Baseline'
WHEN '1' THEN 'VARIANT_1_NAME'
WHEN '2' THEN 'VARIANT_2_NAME'
END AS experimentVariant,
event_name AS eventName,
COUNT(*) AS count
FROM
`analytics_ANALYTICS_PROPERTY.events_*`,
UNNEST(user_properties) AS userProperty
WHERE
(_TABLE_SUFFIX BETWEEN 'YYYMMDD' AND 'YYYMMDD')
AND userProperty.key = 'firebase_exp_EXPERIMENT_NUMBER'
GROUP BY
experimentVariant, eventName