GA4 BigQueryへのデータエクスポート | オンラインセミナー アーカイブ動画+テキスト起こし(2022年6月16日開催)

オンラインセミナー アーカイブ

当日のセミナー動画

このセミナーのテキストのダウンロードはこちらから

BigQuery サンドボックスに無料でエクスポート

BigQuery Export の利用を開始する方法は2種類

サービス名公式サイトクレジットカードの 事前登録
Google Cloud Platform(GCP)無料トライアルhttps://cloud.google.com/gcp/無料枠を利用するためには、登録時にクレジットカード情報の登録が必要。 無料枠を使い切っても、自動で課金されることは無い。
BigQueryサンドボックスhttps://cloud.google.com/bigquery/docs/sandbox?hl=ja登録時にクレジットカード情報の登録は不要。

公式ヘルプ: https://cloud.google.com/bigquery/docs/sandbox

解説:サンドボックスについて

BigQuery サンドボックスについて

制限事項

BigQuery サンドボックスには次の制限があります。

すべてのデータセットにデフォルトのテーブル有効期限https://cloud.google.com/bigquery/docs/updating-datasets#table-expirationが設定されています。また、デフォルトのパーティション有効期限は 60 日間に設定されています。テーブル(https://cloud.google.com/bigquery/docs/tables-intro)、ビュー(https://cloud.google.com/bigquery/docs/views-intro)、パーティション分割テーブル(https://cloud.google.com/bigquery/docs/partitioned-tables)のパーティションは、60 日後に自動的に有効期限が切れます。

サンドボックス プロジェクトでサポートされていないものは、次のとおりです。

GA4のデータは、1日1テーブルでBigQueryに出力されます。60日よりも前のデータは自動的に削除されます。また外部からインポートしたCSVファイル等も、60日経つと削除されます。

サンドボックスの制限をなくすには、プロジェクトをアップグレード(=有料版への移行)し、リソースの有効期限を削除または更新します。サンドボックスからアップグレードした後も、無料枠( https://cloud.google.com/free )を使用できますが、料金が発生する場合があります。 BigQuery の割り当てを管理するには、費用管理( https://cloud.google.com/bigquery/docs/custom-quotas )の設定を検討してください。

サンドボックスからのアップグレードについては、下記をご参照ください。https://cloud.google.com/bigquery/docs/sandbox#upgrade_from_the_sandbox

BigQueryサンドボックス

公式サイト: https://cloud.google.com/bigquery/docs/sandbox?hl=ja

「BigQueryに移動」をクリック。

Google Cloud Platform の画面が表示されます。

https://console.cloud.google.com/

プロジェクトの作成

Google API Console プロジェクトを作成するか、既存のプロジェクトを選択します。

ここでは、プロジェクトを作成します。「プロジェクトの選択」をクリック。

解説:プロジェクト

BigQueryのアカウント構造は上記のようになっています。

「新しいプロジェクト」をクリック。

「プロジェクト名」(図(1))を入力すると、「プロジェクト ID」 (図(2))の候補が自動的に入力されますが、変更できます。 「プロジェクト ID」は後で変更できないので、変更したい場合は、ここで変更しておく必要があります。「プロジェクト ID」を変更するか、またはそのままで「作成」をクリックします。

作成したプロジェクトをクリックします。

Google API の確認

左上のナビゲーション メニューを開き、「API とサービス」 > 「ライブラリ」 の順にクリックします。

公式ヘルプ:https://support.google.com/analytics/answer/9823238?hl=ja#zippy=%2C%E3%81%93%E3%81%AE%E8%A8%98%E4%BA%8B%E3%81%AE%E5%86%85%E5%AE%B9

APIライブラリで、BigQueryを検索し、検索結果をクリックします。BigQuery APIが有効になっていれば、そのままで。有効になっていなければ、有効にしてください。

Cloud プロジェクトにサービス アカウントを追加していることを確認

Cloud プロジェクトにサービス アカウントを追加していることを確認します。

firebase-measurement@system.gserviceaccount.com がプロジェクトのメンバーとして追加されており、編集者の基本ロールが割り当てられていることを確認し、必要に応じてアカウントを追加します。

「プロジェクト情報」の画面で、「このプロジェクトにユーザーを追加」をクリックします。

公式ヘルプ:https://support.google.com/analytics/answer/9823238?hl=ja#zippy=%2C%E3%81%93%E3%81%AE%E8%A8%98%E4%BA%8B%E3%81%AE%E5%86%85%E5%AE%B9

firebase-measurement@system.gserviceaccount.com に BigQuery データ編集者のロールを設定して、保存します。

BigQueryを使用する

BigQuery は、Google Cloud Platform のメニュー内、「分析」から利用できます。

「固定」を利用すると、 BigQueryをメニュー上部に固定することができます。

BigQuery を GA4 プロパティにリンクする

管理 > プロパティ列 > BigQueryのリンク をクリック。

GA4にログインします。 BigQuery プロジェクトの所有者権限と、リンクするGA4データ ストリームを含むアナリティクス プロパティの編集者の役割を持つメールアドレスを使用します。

「リンク」をクリック。

「BigQuery プロジェクトを選択」をクリックして、読み取り権限以上の権限を持つプロジェクトのリストを表示します。

リストからプロジェクトを選択し、「確認」 をクリックします。

データのロケーションを選択します。

次へ」をクリックします。

公式ヘルプ: データセットのロケーション
https://cloud.google.com/bigquery/docs/locations?hl=ja

エクスポートに含めるデータ ストリーム、およびエクスポートから除外する特定のイベントを選択するには、「データ ストリームとイベントを設定」を選択します。

イベントを除外するには、「追加」をクリックして既存のイベントのリストから選択するか、「名前でイベントを指定」をクリックして名前で既存のイベントを選択するか、プロパティで収集していないイベント名を定義します。

(標準プロパティでは、BigQuery Export の 1 日の上限は 100 万イベント(Google アナリティクス 360(Google アナリティクス 4 プロパティ)の場合はヘルプに「数十億件のイベント」と記載されている。 https://support.google.com/analytics/answer/11202874 )です。

イベントを除外するには、「追加」をクリックして既存のイベントのリストから選択するか、「名前でイベントを指定」をクリックして名前で既存のイベントを選択するか、プロパティで収集していないイベント名を定義します。

「追加」をクリックして既存のイベントのリストから選択するか、「名前でイベントを指定」をクリックして名前で既存のイベントを選択するか、プロパティで収集していないイベント名を定義します。

広告識別子を含める場合は、「モバイルアプリ ストリーム用の広告識別子の追加」を選択します。

データのエクスポートの頻度として「毎日」(1日1回)または「ストリーミング」(継続的)、あるいは両方を選択します。

「次へ」 をクリックします。

解説:ストリーミングとは

BigQuery ストリーミング エクスポートでは、BigQuery Export を介して当日のデータを数分以内に入手できます。

このエクスポート オプションを使用すると、BigQuery に最新のデータを読み込んで、ユーザーとプロパティのトラフィックを分析できます。

ストリーミング エクスポートでは、毎日新しいテーブルが 1 つ作成されます。

events_intraday_YYYYMMDD(イントゥラデイ=その日のうちに、の意): 内部ステージング テーブルです。このテーブルには、その日に発生したセッション アクティビティのレコードが保持されます。ストリーミング エクスポートはベスト エフォート型の処理であり、イベントの遅れやアップロードの失敗などにより、データに漏れが生じる場合もあります。データは 1 日を通して継続的にエクスポートされます。セッションが複数のエクスポート周期にまたがっていると、テーブルにはそのセッションのレコードが複数保存されることがあります。このテーブルは、events_YYYYMMDD の作成が完了すると削除されます。

ストリーミング エクスポートを選択した場合、次のテーブルも毎日作成されます。

events_YYYYMMDD: 1 日に 1 回、すべてのイベントがエクスポートされます。

その日の安定したデータセットを分析できるよう、クエリでは、events_intraday_YYYYMMDD ではなく events_YYYYMMDD を使用するようにしてください。

公式ヘルプ:https://support.google.com/analytics/answer/9358801?hl=ja

データをストリーミング送信するメリット

■絶好のタイミングで広告配信

たとえば、ユーザーが(商品をカートに追加するなど)興味を示したもののコンバージョンに至らなかった場合、その直後に割引を提示すると効果的であることがわかっています。最適なタイミングで割引をアピールすると、多くのユーザーが再びサイトを訪れ、コンバージョンを達成する可能性が高まります。そのためには、最新のデータを利用して該当する ユーザーをすばやく見つけ、ユーザーの関心を引き付ける広告を絶好のタイミングで配信しなければなりません。

■新たなトレンドの理解

頻繁なデータ更新は、問題のすみやかな特定と解決にも役立ちます。また、文化的トレンドをいち早くキャッチして、情報を発信することもできます。BigQuery は、こうしたデータ運用の重要な部分を担います。CRM システム、コールセンター、実店舗など、現在 Google アナリティクスでは利用できないデータを取り込むことで、顧客、問題点、新たなトレンドを深く理解することができます。

公式ブログ: https://analytics-ja.googleblog.com/2017/10/google-bigquery.html

BigQuery を GA4 プロパティにリンクする(リンクを完了させる)

設定を確認して、「送信」をクリックします。

参考:選択したリージョンが間違っていて、リンクの作成後に変更する必要がある場合

  1. BigQuery へのリンクを削除します(後述)。
  2. データを BigQuery の別のデータセットにバックアップ(移動(https://cloud.google.com/bigquery/docs/managing-datasets#moving_datasets)またはコピー(https://cloud.google.com/bigquery/docs/copying-datasets))します。
  3. 元のデータセットを削除(https://cloud.google.com/bigquery/docs/samples/bigquery-delete-dataset)「します。次のステップで必要になるため、名前を控えておきます。
  4. 削除したデータセットと同じ名前で新しいデータセットを作成し、データのロケーションを選択します。
  5. バックアップしておいたデータを、新しいデータセットにコピーします。
  6. 上の手順を繰り返して、BigQuery へのリンクを新たに作成します。

ロケーションを変更すると、データに空白期間が生じる点に注意しましょう。元のリンクを削除してから新しいリンクを削除するまでの間、データのエクスポートは(頻度が「ストリーミング」でも「毎日」でも)処理されません。

公式ヘルプ: https://support.google.com/analytics/answer/9823238?hl=ja#zippy=%2C%E3%81%93%E3%81%AE%E8%A8%98%E4%BA%8B%E3%81%AE%E5%86%85%E5%AE%B9

BigQuery へのリンクを削除する

管理ページで、目的のアカウントとプロパティが選択されていることを確認します。

「プロパティ」列の 「BigQuery とのリンク」をクリックします。

目的のリンクの行をクリックします。

公式ヘルプ:https://support.google.com/analytics/answer/9823238?hl=ja#zippy=%2C%E3%81%93%E3%81%AE%E8%A8%98%E4%BA%8B%E3%81%AE%E5%86%85%E5%AE%B9

画面右上の その他 > [削除] の順にクリックします。

解説:BigQuery Export に関する制限

標準プロパティでは、BigQuery Export の 1 日の上限は 100 万イベント(Google アナリティクス 360(Google アナリティクス 4 プロパティ)の場合はヘルプに「数十億件のイベント」と記載されています。 https://support.google.com/analytics/answer/11202874 )です。プロパティがエクスポートの上限を継続的に超えると、BigQuery の日次エクスポートは一時停止され、それ以前の数日間のエクスポートは再処理されません。

プロパティの編集者と管理者には、自らが管理しているプロパティが 1 日の上限を超えるたびにメール通知が届きます。この通知には、何も対応しなかった場合にエクスポートが一時停止される時期が記載されます。また、標準プロパティが 1 日の上限である 100 万件イベントを大幅に超えると、アナリティクスでは日次エクスポートが直ちに一時停止されることがあります。通知が届いた場合は、データ フィルタリング機能(データ ストリーム エクスポートとイベント除外)( https://support.google.com/analytics/answer/9823238?hl=ja#datafiltering )を利用して、毎日エクスポートするイベント数を減らし、日次エクスポートの作業を継続できるようにしてください。

ストリーミング エクスポート( https://support.google.com/analytics/answer/9358801#streaming )に制限はありません。

詳しくは、360 プロパティの機能に適用される制限についてのヘルプ( https://support.google.com/analytics/answer/11202874 )をご覧ください。

BigQuery の料金

BigQuery の料金はストレージとクエリ処理に基づいて請求されます。

価格表(https://developers.google.com/bigquery/pricing#packagetable)をご覧になり、インタラクティブ クエリとバッチクエリの違い(https://cloud.google.com/bigquery/docs/running-queries?hl=jp#batchqueries)を確認してください。

エクスポートを処理するには、クラウドに有効なお支払い方法の登録(https://support.google.com/cloud/answer/4356189)が必要です。無効なお支払い方法が原因でエクスポートが中断された場合、その期間のデータをエクスポートし直すことができませんのでご注意ください。

アナリティクスのデータは 「BigQuery サンドボックス」(前出)に無料でエクスポートすることもできますが、「サンドボックスの制限」(前出)が適用されることにご注意ください。

公式ヘルプ:https://support.google.com/analytics/answer/9823238?hl=ja#zippy=%2C%E3%81%93%E3%81%AE%E8%A8%98%E4%BA%8B%E3%81%AE%E5%86%85%E5%AE%B9

料金と課金 東京(asia-northeast) (1) ストレージの料金

課金対象料金詳細
アクティブストレージ(注1)$0.023 / GB毎月10 GBまで無料
長期保存(注2)$0.016 / GB毎月10 GBまで無料

(注1)「アクティブ ストレージ」には、過去 90 日間で変更されたテーブルまたはテーブル パーティションが含まれます。

(注2)「長期保存」には、90 日間連続して変更されていないテーブルまたはテーブル パーティションが含まれます。そのテーブルのストレージの料金は自動的に約 50% 値引きされます。アクティブ ストレージと長期保存のパフォーマンス、耐久性、可用性に違いはありません。

料金と課金 東京(asia-northeast) (2) データ取り込みの料金

課金対象料金詳細
 BigQuery Storage API$0.03 / GB 毎月最初の 2 TB まで無料
ストリーミング挿入$0.012 / 200MB挿入に成功した行が対象課金となります。 最小サイズ1 KBで各行が計算されます。

BigQuery へのデータの読み込みの概要 公式ヘルプ:https://cloud.google.com/bigquery/docs/loading-data?hl=ja

料金と課金 東京(asia-northeast) (3) 分析の料金

課金対象料金詳細
クエリ(オンデマンド分析)$6.00 / TB毎月1TBまで無料
クエリ(月定額)$2,400 / 100 slots最小スロット数は 100 で、100 スロット単位で購入可能
クエリ(年定額)$2,040 / 100 slots最小スロット数は 100 で、100 スロット単位で購入可能

最新情報を公式ヘルプでご確認ください:https://cloud.google.com/bigquery/pricing?hl=ja#storage

データのエクスポートが開始されるタイミング

リンク完了後 24 時間以内に、データが BigQuery プロジェクトにエクスポートされるようになります。

毎日のエクスポートを有効にすると、前日のデータが格納された 1 ファイルが毎日(通常は、レポート作成用に設定したタイムゾーンの午後の早い時間帯に)エクスポートされます。

公式ヘルプ:https://support.google.com/analytics/answer/9823238?hl=ja#zippy=%2C%E3%81%93%E3%81%AE%E8%A8%98%E4%BA%8B%E3%81%AE%E5%86%85%E5%AE%B9

BigQuery にエクスポートされるデータ

[GA4] BigQuery Export スキーマ

データセット

BigQuery にリンクしている GA4 プロパティおよび Firebase プロジェクトごとに、「analytics_<property_id>」という名前の 1 つのデータセットが BigQuery プロジェクトに追加されます。

公式ヘルプ

https://support.google.com/analytics/answer/7029846?hl=ja

テーブル

毎日のエクスポート オプションまたはストリーミング エクスポート オプションが有効になっているかどうかにかかわらず、各データセット内に events_YYYYMMDD という名前のテーブルが毎日作成されます。

ストリーミング エクスポート オプションを有効にすると、events_intraday_YYYYMMDD という名前のテーブルも作成されます。(前出)イベントは 1 日中記録されるため、このテーブルには継続的にデータが入力されます。このテーブルは、events_YYYYMMDD の作成が完了すると 1 日の終わりに削除されます。(BigQuery サンドボックスの場合、1 日の途中にはイベントはインポートされず、追加で適用される上限設定があります。当日にインポートする場合は、サンドボックスからアップグレードしてください)

主なデータ型

データ型説明
STRING文字列型
INTEGER(インテジャー)整数型
BOOLEAN(ブーリアン)TRUE または FALSE(フォールス)
FLOAT浮動小数点型 小数部分を持つ数値

主なデータ型 RECORD

列の種類として、event_paramsのように「RECORD」という種別があります。

種類:「RECORD」、モード:「REPEATED」の列は構造体と呼ばれる特殊なデータ型で、内部に配列(複数のデータを順番に並べた構造)などさまざまなフィールドを内包しています。

この構造体を組み合わせると、複数のテーブルを一つに結合しているかのように使うことができます。その結果、個別のテーブルをJOIN(2つ以上のテーブルを繋ぐこと)してクエリーするよりも高速に複雑なデータを分析できます。

[event_params]を例にRECORD型を解説

ここからは、[event_params]を例にRECORD型を解説します。 

1つのレコードが1つのイベントを格納しており(上記の例では、page_view)、その中に埋め込まれたテーブルが、そのイベント(=page_view)のパラメータを格納しています。

[event_params]は[key]と[value]に別れています。[value]は更に4つに分かれています。

  • [string_value]=文字列を格納する。
  • [int_value]=整数を格納する。
  • [float_value」=浮動小数点型のデータを格納する。
  • [double_value]=有効桁数の多い小数を格納する。

たとえば、page_titleは[string_value]に格納されています。文字列は[string_value]に入れることが決まっているからです。

BigQuery にエクスポートされるデータスキーマ

スキーマとは、データベースのデータの構造、性質、などを定義したものです。

BigQueryにエクスポートされるGA4のデータのスキーマを確認します。

公式ヘルプ:https://support.google.com/analytics/answer/7029846?hl=ja

フィールド名データ型説明
アプリ  
app_infoRECORDアプリについての情報を格納するレコード。
app_info.idSTRINGアプリのパッケージ名またはバンドル ID。
app_info.firebase_app_idSTRINGアプリに関連付けられている Firebase アプリ ID。
app_info.install_sourceSTRINGアプリをインストールしたストア。
app_info.versionSTRINGアプリの versionName(Android の場合)または short bundle version。
デバイス  
deviceRECORDデバイスの情報を格納するレコード。
device.categorySTRINGデバイスのカテゴリ(モバイル、タブレット、PC)。
device.mobile_brand_nameSTRINGデバイスのブランド名。
device.mobile_model_nameSTRINGデバイスのモデル名。
device.mobile_marketing_nameSTRINGデバイスのマーケティング名。
device.mobile_os_hardware_modelSTRINGオペレーティング システムから直接取得したデバイスのモデル情報。
device.operating_systemSTRINGデバイスのオペレーティング システム。
device.operating_system_versionSTRINGOS のバージョン。
device.vendor_idSTRINGIDFV(IDFA を収集していない場合にのみ使用)。
device.advertising_idSTRING広告 ID または IDFA。
device.languageSTRINGOS の言語。
device.time_zone_offset_secondsINTEGERGMT との時差(秒単位)。
device.is_limited_ad_trackingBOOLEANデバイスの広告トラッキング制限の設定。iOS14 以降では、IDFA がゼロ以外の場合、false が返されます。
device.web_info.browserSTRINGユーザーがコンテンツを閲覧したブラウザ。
device.web_info.browser_versionSTRINGユーザーがコンテンツを閲覧したブラウザのバージョン。
device.web_info.hostnameSTRINGログに記録されたイベントに関連付けられたホスト名。
ストリームとプラットフォーム  
stream_idSTRINGストリームの数値 ID。
platformSTRINGアプリケーションが構築されているプラットフォーム。
ユーザー  
user_first_touch_timestampINTEGERユーザーが初めてアプリを起動したか、サイトに訪れた時刻(マイクロ秒単位)。
user_idSTRINGsetUserId API によって設定されるユーザー ID。
user_pseudo_idSTRINGユーザーの仮の ID(アプリ インスタンス ID など)。
user_propertiesRECORDsetUserProperty API によって設定される、ユーザー プロパティの繰り返しレコード。
user_properties.keySTRINGユーザー プロパティの名前。
user_properties.valueRECORDユーザー プロパティの値を格納するレコード。
user_properties.value.string_valueSTRINGユーザー プロパティの文字列値。
user_properties.value.int_valueINTEGERユーザー プロパティの整数値。
user_properties.value.double_valueFLOATユーザー プロパティの倍精度値。
user_properties.value.float_valueFLOATこのフィールドは現在使用されていません。
user_properties.value.set_timestamp_microsINTEGERユーザー プロパティが最後に設定された時刻(ミリ秒単位)。
user_ltvRECORDユーザーのライフタイム バリューに関する情報を格納するレコード。このフィールドは当日表では使用されません。
user_ltv.revenueFLOATユーザーのライフタイム バリュー(収益)。このフィールドは当日表では使用されません。
user_ltv.currencySTRINGユーザーのライフタイム バリュー(通貨)。このフィールドは当日表では使用されません。
キャンペーン 注: traffic_source のアトリビューションは、クロスチャネルのラストクリックに基づいています。traffic_source の値は、ユーザーがインストール後に次のキャンペーンを操作しても変更されません。
traffic_sourceRECORDユーザーを最初に獲得したトラフィック ソースの名前。このフィールドは当日表では使用されません。
traffic_source.nameSTRINGユーザーを最初に獲得したマーケティング キャンペーンの名前。このフィールドは当日表では使用されません。
traffic_source.mediumSTRINGユーザーを最初に獲得したメディアの名前(有料検索、オーガニック検索、メールなど)。このフィールドは当日表では使用されません。
traffic_source.sourceSTRINGユーザーを最初に獲得したネットワークの名前。このフィールドは当日表では使用されません。
地域  
geoRECORDユーザーの位置情報を格納するレコード。
geo.continentSTRINGイベントが報告された大陸(IP アドレスベース)。
geo.sub_continentSTRINGイベントが報告された亜大陸(IP アドレスベース)。
geo.countrySTRINGイベントが報告された国(IP アドレスベース)。
geo.regionSTRINGイベントが報告された地域(IP アドレスベース)。
geo.metroSTRINGイベントが報告された大都市圏(IP アドレスベース)。
geo.citySTRINGイベントが報告された都市(IP アドレスベース)。
イベント  
event_dateSTRINGイベントが記録された日付(アプリの登録タイムゾーンにおける日付を YYYYMMDD 形式で示したもの)。
event_timestampINTEGER該当クライアントでイベントが記録された時刻(ミリ秒単位、UTC)。
event_previous_timestampINTEGER該当クライアントで前回イベントが記録された時刻(ミリ秒単位、UTC)。
event_nameSTRINGイベントの名前。
event_paramsRECORDこのイベントに関連付けられたパラメータを格納する繰り返しレコード。
event_params.keySTRINGイベント パラメータのキー。
event_params.valueRECORDイベント パラメータの値を格納するレコード。
event_params.value.string_valueSTRINGイベント パラメータの文字列値。
event_params.value.int_valueINTEGERイベント パラメータの整数値。
event_params.value.double_valueFLOATイベント パラメータの倍精度値。
event_params.value.float_valueFLOATイベント パラメータの浮動小数点値。このフィールドは現在使用されていません。
event_value_in_usdFLOATイベントの「値」パラメータの通貨換算値(米ドル単位)。
event_bundle_sequence_idINTEGERこれらのイベントをアップロードしたバンドルのシーケンシャル ID。
event_server_timestamp_offsetINTEGERデータの収集時とアップロード時のタイムスタンプの間隔(マイクロ秒単位)。
e コマース  
ecommerceRECORDe コマースに関する情報を格納するレコード。
ecommerce.total_item_quantityINTEGERこのイベントにおけるアイテムの合計数。items.quantity の合計です。
ecommerce.purchase_revenue_in_usdFLOATこのイベントでの購入による収益。米ドル(標準単位)で表記されます。購入イベントに対してのみ入力されます。
ecommerce.purchase_revenueFLOATこのイベントでの購入による収益。現地通貨(標準単位)で表記されます。購入イベントに対してのみ入力されます。
ecommerce.refund_value_in_usdFLOATこのイベントにおける払い戻しの金額。米ドル(標準単位)で表記されます。払い戻しイベントに対してのみ入力されます。
ecommerce.refund_valueFLOATこのイベントにおける払い戻しの金額。現地通貨(標準単位)で表記されます。払い戻しイベントに対してのみ入力されます。
ecommerce.shipping_value_in_usdFLOATこのイベントにおける送料。米ドル(標準単位)で表記されます。
ecommerce.shipping_valueFLOATこのイベントにおける送料。現地通貨で表記されます。
ecommerce.tax_value_in_usdFLOATこのイベントにおける税額。米ドル(標準単位)で表記されます。
ecommerce.tax_valueFLOATこのイベントにおける税額。現地通貨(標準単位)で表記されます。
ecommerce.transaction_idSTRINGe コマース トランザクションのトランザクション ID。
ecommerce.unique_itemsINTEGERこのイベントにおける固有のアイテム数。item_id、item_name、item_brand に基づきます。
商品アイテム  
itemsRECORDこのイベントに含まれる商品アイテムの繰り返しレコード。
items.item_idSTRING商品アイテムの ID。
items.item_nameSTRING商品アイテムの名前。
items.item_brandSTRING商品アイテムのブランド。
items.item_variantSTRING商品アイテムのバリエーション。
items.item_categorySTRING商品アイテムのカテゴリ。
items.item_category2STRING商品アイテムのサブカテゴリ。
items.item_category3STRING商品アイテムのサブカテゴリ。
items.item_category4STRING商品アイテムのサブカテゴリ。
items.item_category5STRING商品アイテムのサブカテゴリ。
items.price_in_usdFLOAT商品アイテムの価格。米ドル(標準単位)で表記されます。
items.priceFLOAT商品アイテムの現地通貨での価格。
items.quantityINTEGER商品アイテムの数量。
items.item_revenue_in_usdFLOATこの商品アイテムの収益。price_in_usd x 数量によって計算されます。購入イベントに対してのみ入力され、米ドル(標準単位)で表記されます。
items.item_revenueFLOATこの商品アイテムの収益。価格 x 数量によって計算されます。購入イベントに対してのみ入力され、現地通貨(標準単位)で表記されます。
items.item_refund_in_usdFLOATこの商品アイテムの払い戻し額。price_in_usd x 数量によって計算されます。払い戻しイベントに対してのみ入力され、米ドル(標準単位)で表記されます。
items.item_refundFLOATこの商品アイテムの払い戻し額。価格 x 数量によって計算されます。払い戻しイベントに対してのみ入力され、現地通貨(標準単位)で表記されます。
items.couponSTRINGこの商品アイテムに適用されるクーポンコード。
items.affiliationSTRING仕入れ先業者や実店舗を指定する商品アフィリエーション。
items.location_idSTRING商品アイテムに関連付けられている場所。
items.item_list_idSTRINGユーザーに商品アイテムが表示されたリストの ID。
items.item_list_nameSTRINGユーザーに商品アイテムが表示されたリストの名前。
Items.item_list_indexSTRINGリスト内の商品アイテムの位置
items.promotion_idSTRING商品プロモーションの ID。
items.promotion_nameSTRING商品プロモーションの名前。
items.creative_nameSTRINGプロモーション スポットで使用されたクリエイティブの名前。
items.creative_slotSTRINGクリエイティブ スロットの名前。
ウェブ  
web_infoRECORDウェブデータの情報のレコード。
プライバシー情報 以下のフィールドは、同意モードを使用した場合のユーザーの同意ステータスに基づいています。
privacy_info.ads_storageSTRINGユーザーに対して広告ターゲティングが有効になっているかどうか。有効な値: Yes、No、Unset
privacy_info.analytics_storageSTRINGユーザーに対してアナリティクスのデータ保存が有効になっているかどうか。有効な値: Yes、No、Unset
privacy_info.uses_transient_tokenSTRINGウェブユーザーがアナリティクスでのデータ保存を拒否し、デベロッパーがサーバーデータの一時的なトークンに基づいて Cookie を使用しない測定を有効にしているかどうか。有効な値: Yes、No、Unset

BigQuery の操作

プロジェクトを選択し、左サイドメニューの「分析」の中から、BigQueryを選択する。

GA4側で確認できるプロジェクト IDは、BigQueryの下記の位置で確認できる。

プロジェクトIDをクリックすると、「analytics_<property_id>」という名前の 1 つのデータセットが表示される。

プロパティIDは、GA4の下記の位置で確認できる。

公式ヘルプ:https://support.google.com/analytics/answer/7029846?hl=ja

「analytics_<property_id>」をクリックし、「events_」をクリックすると、最後にインポートされた1日分のデータが表示されます。YYYY-MM-DDのプルダウンをクリックすると、日毎のデータを選択することができます。(サンドボックス利用中は、60日より前のデータは削除される。)

「スキーマ」を表示するタブ。

「詳細」タブで、「テーブル情報」が表示される。

「プレビュー」タブで、テーブルをプレビューすることができる。

「プレビュー」では、イベントとパラメータを見ることができる。

クエリ

「クエリ」でクエリ実行画面を開くことができる。

実際に上の結果が得られるクエリを実行してみます。

イベント名別のイベントの実行回数の一覧です。

ここからは、SQLを使って、データを取得する方法をご紹介します。

SQLとは、リレーショナルデータベース(複数の表の形式で、データを管理するデータベースシステム)を操作するための言語です。

SQLが何の略かは諸説ありますが、たとえば、

Structured(構造化された)、Query(問い合わせ用の)、Language(言語)

という説があります。

これからSQLを習得したいという方の入門書としては、下記の本がおすすめです。

集中演習 SQL入門
Google BigQueryではじめるビジネスデータ分析
木田和廣  (著) 
インプレス (2021/2/19)

実際に下記のクエリを実行することで、先ほど見た実行結果が得られます。

1行ずつ解説していきます。

※SQLの書き方は1つではありません。あくまでも書き方の一つとしてご覧ください。

SELECT
データを取得するカラムを指定する。

FROM
データを取得するテーブルを指定する。

COUNT
[event_name]フィールドを基準にグループ化して、それぞれのレコード数を[event_count]として取得する。

WHERE
条件を指定して、合致するレコードだけを取得する。

_TABLE_SUFFIX BETWEEN ‘YYYYMMDD’ AND ‘YYYYMMDD’
日付別に分割されたテーブルをまとめて参照する。

GROUP BY
フィールドを指定して、グループ化(例:同じイベント名を1行にまとめて集計)する。
GROUP BY は列番号を指定してグループ化することができる。
[event_name] [event_count]というフィールド名が並んでいる場合、「1」は[event_name] のことである。

ORDER BY
ORDER BYに続けて、並べ替えの基準とするフィールド名を並べ替える。
ORDER BYは列番号を指定して並べ替えすることができる。
[event_name] [event_count]というフィールド名が並んでいる場合、「2」は[event_count] のことである。
ORDER BY で並べ替えの基準とするフィールド名(列番号)を指定した後、ASC(アスク)で昇順の指定、DESC(デスク)で降順の指定ができる。ASCは省略できるので、何もつけない場合は、昇順となる。

ここまでで見た、クエリの実行結果は上記のようになります。
イベント名別のイベントの実行回数の一覧です。

SQLの例 page_titleとPV数のデータを作成

「page_title」はRECORD型の「event_params」の中にあります。

[event_params]は[key]と[value]に別れています。[value]は更に4つに分かれています。

  • [string_value]=文字列を格納する。「page_title」のvalueはここに入ります。
  • [int_value]=整数を格納する。
  • [float_value」=浮動小数点型のデータを格納する。
  • [double_value]=有効桁数の多い小数を格納する。

整理すると、上記のようになります。

※SQLの書き方は1つではありません。あくまでも書き方の一つとしてご覧ください。

RECORD型の「event_param」からデータを取り出す時は、UNNESTを使います。

「key」が「page_title」のデータを取得します。

「event_name」が「page_view」に合致するデータだけを取得する。

今回はクエリ結果とGA4のレポートの数値が一致しています。(何らかの理由で、若干の差が出る可能性もあると思われます。)※サンドボックスは60日より前のデータが自動で削除されているので、GA4のレポートとのデータ比較の際は注意が必要です。

GA4のデータと外部のデータをBigQuery内で結合する

ここでは、GA4のデータと、セミナー申込受付システムのデータをBigQuery内で結合する例をご説明します。

外部のデータを、GA4からエクスポートしたBigQueryのデータに繋ぎます。

今回、例として繋ぎたいのは、セミナーの参加者データです。

GA4が持っているセミナー別の案内ページのPV数のデータと繋ぎます。

見出し行は、半角英数文字にします。アップロードの際の文字コードはUTF-8です。

外部データ(この場合はCSVファイル)をインポートする「データセット」を選択し、「テーブルを作成」をクリック。

CSVファイルをBigQueryにアップロードする。

CSVファイルがBigQueryにアップロードされた。

※SQLの書き方は1つではありません。あくまでも書き方の一つとしてご覧ください。

RECORD型の「event_param」からデータを取り出す時は、UNNESTを使います。

赤線で囲んだ部分は既に見た「page_titleとPV数のデータを作成」とそっくりですが、WITHで「仮想テーブル」を作っている点が異なります。

「WITHで仮想テーブルを作る」とは、ここでは、先に[page_location](=URL)と[pageviews]のテーブルを作っておくことを指します。

後半では、「RIGHT OUTER JOIN」を使って、仮想テーブルと、CSVでインポートしたテーブルを連結しています。page_location =url によって結合させています。

RIGHT OUTER JOIN の解説

RIGHT OUTER JOIN は、FROMで指定するテーブルを左側、RIGHT OUTER JOINで指定するテーブルを右側として、右側は全レコード、左側は右側と共通して持つフィールドの値が重なっているレコードのみを残します。

実行結果はこちらです。GA4が持っていたページビュー数と、外部にあったセミナー参加者数のデータが、page_location=URLをキーにして結合されています。

上記の例で参加者数よりもpageviewsの数値が小さくなっているのは、サンドボックスを使用しているため、60日よりも前のデータが削除されており、集計対象とならなかったためです。

関連記事

特集記事

コメント

この記事へのコメントはありません。

ランキング(週間)

  1. 1

    GA4 「ページ ロケーション」と「ページ パス と スクリーン クラス」何が違う?ドメインの有無以外にもパラメータの扱いに違いあり

  2. 2

    GA4 拡張計測機能の新顔「フォームの操作」 form_start, form_submit

  3. 3

    GA4のレポート画面の数値データは、イベント発生時から何時間後に確定するのか?

  4. 4

    GA4 クロスドメイン設定では、リンク先に「_gl」パラメータが付く。勝手なパラメータを付けるとエラーになるページは要注意

  5. 5

    GA4で設定したイベントの消し方(削除の仕方)

  6. 6

    「GA4【無料】オンラインセミナー」セミナーアーカイブ(登録不要)

  7. 7

    GA4の指標「総ユーザー数」VS「アクティブ ユーザー数」

  8. 8

    ZOOMでの オンラインセミナー 参加方法

  9. 9

    ECサイトのゴールデンルートを発見する方法 – Google Analytics 4とPythonを活用して(第2回)

  10. 10

    GA4の探索で「ページ別訪問数」を見ることは可能か?

最近の記事

  1. 生成AIを調整してABテストを実装したら想像以上に早かった

  2. 無料で使えるABテストツールのバージョンアップを行いました

  3. 無料ABテストツール(and,B)のマニュアルを作成しました

カテゴリー

 
TOP