Dataformとは? GA4・BigQueryとの連携方法を解説

Google Dataformとは? 

Google Dataformとは、一言でいえば「BigQuery内でのデータ加工・整理(ELTの『T』=Transform)を、効率化・管理するためのフルマネージドツール」となる。ざっくりと要約すると、大量のRowデータを、クエリしやすく、またBIツールで使いやすい形にするために「データマート」へ変換するためのツールといってよい。当記事では主にBigQueryにエクスポートされたGA4のデータを取り扱う上でDataformがどのように役に立つのか、またその必要性について最小限のトピックに限定して解説する。

GA4・BigQueryにDataformが必要な理由

GA4とBigQueryを連携させると、自動でGA4のデータがBigQueryにエクスポートされる。これによってBigQueryにGA4のデータセットが作成され、そのデータセットにはシャーディングテーブル([PREFIX]_YYYYMMDD などの名前の接頭辞を使用して複数のテーブルにデータを格納する方法)としてデータが日次で格納される。つまりこの日次のシャーディングテーブルにGA4のRowデータが格納されていくことになる。

GA4のデータ分析ではこのBigQueryにエクスポートされたシャーディングテーブルに対してクエリすることで分析が可能になるが、この分析対象となるシャーディングテーブルは整形がされていないRowデータとなるため、分析するにあたりいくつかの不都合が生じることになる。

データマート作成に必須

データマートとは整形された最小限のデータだけが格納されたテーブルのことで、このように対象とするデータ分析をする際に、必要としない不要なデータはカットしたテーブルのことをデータマートという。データマートを作成しなければ、アウトプットしたい処理結果を得るためのクエリ処理を都度、実行しなければならず、その分、クエリ抽出料金がかかってしまうことになる。事前にアウトプットに必要なクエリ処理が済んでいれば、そのクエリ処理が済んでいるデータマートに対して、単純なSELECT文を実行するだけで結果を得られるため、クエリ抽出料金の節約やレスポンスの劇的な改善が見込める。すなわち、このようなデータマートを作成するにあたってのデータパイプラインを構築するためのツールがDataformとなる。

Dataformの概要

ここではDataformの機能を全て解説するのではなく、BigQueryにエクスポートされたGA4のデータパイプライン構築に必要な知識のみに絞って解説を行う。また、GA4のデータマートを作成するにあたってのデータパイプライン構築にDataformの公式ヘルプを全て理解する必要は全くなく、必要なトピックだけを完結に理解しやすいように解説する。

BigQueryとDataformの関連性

Dataformは簡単に言うとデータマートを作成するためのデータパイプライン構築ツールとなるが、BigQueryとどのようにデータが関連付けられるのかをここでは簡単に解説する。Dataformはデータパイプライン構築ツールであり、その定義をDataformで構築していくことになる。つまり定義はDataformで記述され、その定義から実体化されたテーブルがBigQueryに保存されるという関連性になる。つまり、Dataform自体がデータを保持したり処理したりするわけではなく、記述された定義に基づいてBigQuery側でクエリが走り、テーブルやビューがBigQuery上に実体化されるという関係性になる。

Dataformのプロジェクト構成

definitions ディレクトリ構成

definitionsディレクトリにはGA4のデータを各階層ごとに処理しデータを格納していく。つまり、GA4のデータ分析基盤を構築するにあたっては3層構造で構成される。このデータフローをデータパイプラインといい、このデータフローの処理をBigQueryだけで構築しようとしてもクエリのスケジューリング機能を使うことになり、ごく単純なパイプランの構築であればこと済むが、Dataformを活用することでこのようなデータパイプラインの構築を煩雑化せずに管理することができるのがDataformを採用するメリットといえる。

データパイプラインの3層構造を構築するにあたり、その目的は最終的なアウトプットテーブルとなるデータマートを作成するためとなる。このデータマートとGoogle データポータル(Looker Studio)を接続することで、クエリ処理を走らせる必要性がなくなるため、高速なレスポンスとクエリ抽出料金を節約することが可能となる。

3層構造を構成するにあたり、ここではGoogle Dataformの公式ヘルプに記載がある名称を採用するが、definitionsディレクトリ配下のフォルダ名称は固定ではないので随時変更しても構わない。

  1. sources(raw層)
    この層には加工されていないデータを格納するのみとなる。GA4のデータはBigQueryに日次で分割されたシャーディング テーブルとして格納されるが、ここではそのテーブルに対して直接アクセスするのではなく、Dataformでパーティショニングテーブルとしてコピーしてraw層であるテーブルを生成する。これにより、元のテーブルを誤って破壊するリスクを避けられる。
  2. intermediate(staging層)
    この層では、sources層で生成されたテーブルを元データとして、中間テーブルを生成する層となる。BigQueryにエクスポートされたデータ及び、コピーしたraw層のデータはネスト構造のままのテーブル構成となっている。ネスト構造のテーブルからデータを抽出するにあたってはアンネストしなければならないが、このUNNEST処理を次のデータ層であるoutputs層で都度、記述するのではなく、このintermediate層でUNNESTされたテーブルを作成することでUNNEST処理を次のステージング層で不要にすることができる。このintermediate層ではGA4のテーブルをUNNESTしフラットにすることが目的となる。
  3. outputs(mart層)
    intermediate層で生成されたテーブルを元に、アウトプットに必要なクエリ処理を記載していく。既にUNNESTされた状態のテーブルであるため、処理コストを低く抑えることができる。データポータル(Looker Studio)は、この層で作成されたテーブル(データマート)と接続することとなる。

SQLXファイル

Dataformの根幹を支えるのが、.sqlx(エスキューエルエックス) という拡張子を持つファイルとなる。SQLXファイルとは「BigQueryの標準SQLに、Dataform独自の強力な『設定』をドッキングさせた上位互換のSQLファイル」といってよい。.sqlxファイルは、「configブロック(定義)」と「本文(通常のSQL)」の2つのエリアで構成されconfigブロックにより、ファイル間の依存関係を定義したり、SQLの結果をBigQueryにどのようにエクスポートするかなどの定義付けをすることができる。

関連記事

BigQuery × Vertex AI (Gemini) 連携完全ガイド

Search ConsoleのデータをBigQueryにエクスポートする全手順

BigQueryでJavaScript UDFを活用

おすすめ記事

最近の記事
おすすめ記事
  1. Dataformとは? GA4・BigQueryとの連携方法を解説

  2. 【IPアドレス不要】Cookieを利用したGA4アクセス除外設定

  3. GA4の「セッション」とは?図解で分かりやすく解説

  1. 【GA4SQL】ページ/セッションをGA4で確認する方法

  2. Looker Studio「データの抽出」でクエリコスト削減

  3. BigQueryのテーブル関数(TVF)で複雑な分析SQLを構築

PAGE TOP