Airbyte でスプレッドシートのデータを BigQuery に連携

· 7min · Masataka Kashiwagi

以前から気になっていた OSS の **Airbyte という EL に特化した Data Integration ツールを使ってみたかったので,今回はこれを使って以前 Embulk で実装していたスプレッドシートから BigQuery へのデータ同期処理と同じことができるか試してみた.

Airbyte は良い感じのUIがあるので,UI をポチポチしながら設定していく

Airbyteとは?

Airbyte

Airbyte は OSS の ETL ツールだが,特に Extract と Load に注力しているツールになっている.豊富なデータソース(Source)とターゲットソース(Destination)に対応していて,これらを設定することでデータを簡単に連携することができる.Transform 部分は内部的には dbt を使ってハンドリングしているみたい.(Transformations with SQL (Part 1/3)

提供形態としては,OSS とマネージドサービス(クラウド版: 有料)があり,ローカルをはじめ AWS/GCP/Azure と各種クラウドサービスでデプロイすることができる(参考: Deploying Airbyte Open Source).

Connector は既に用意されているもの(airbyte/airbyte-integrations/connectors/)もあれば,独自で作成することもできる.

スプレッドシートから BigQuery に連携

基本的には,Tutorial に沿って進めていく.まずは git clone して UI を立ち上げる.

git clone https://github.com/airbytehq/airbyte.git
cd airbyte
docker compose up

docker compose を実行したら,http://localhost:8000 で UI にアクセスすることができる.

ここからは UI の世界で全て完結することができる!

Source

案内に従って進めると,まずプルダウンから今回のデータソースである Google Sheets を Source type として選択する.右側に Setup Guide があるので,見ながら設定できて親切設計だなと感じた.

Google Sheets

以下の設定を埋めていく.

  • Source name
    • 「Google Sheets」としている
  • Authentication
    • GCP のサービスアカウントを設定する.json ファイルの中身をコピーして貼り付ける
    • cat ~/.gcp/hoge_service_account.json | pbcopy でクリップボードにコピーするとやりやすい
  • Row Batch Size
    • デフォルトの200にしている
  • Spreadsheet Link
    • 対象となるスプレッドシートの URL を設定する
    • 事前にサービスアカウントでのアクセスを許可しておく必要がある

Destination

次に,プルダウンからターゲットソースである BigQuery を Destination type として選択する.

BigQuery

以下の設定を埋めていく.

  • Destination name
    • 「BigQuery」としている
  • Project ID
    • GCP にアクセスして現在使っているプロジェクト ID を設定する
  • Dataset Location
    • 「US」で良さそう?
  • Default Dataset ID
    • BigQuery のデータセットとして作成される ID になる
  • Loading Method
    • Standard Inserts と GCS Staging の2種類ある
    • Standard Inserts
      • SQL INSERT で直接アップロードする方法で,非効率的なため GCS Staging を推奨している(今回はこちらを選択)
    • GCS Staging
      • ファイルにレコードを書き込み,そのファイルを GCS にアップロードし,その後 COPY INTO テーブルを使用してファイルをアップロードする方法(GCS のバケットなどの情報が必要になる)
  • Service Account Key JSON (Required for cloud, optional for open-source)
    • GCP のサービスアカウントを設定する.json ファイルの中身をコピーして貼り付ける
  • Transformation Query Run Type (Optional)
    • interactive と batch の2種類ある
  • Google BigQuery Client Chunk Size (Optional)
    • デフォルトの15にしている

Connection

最後に,Connection のセットアップを行う.設定した Source と Destination をセットし,Replication frequency(同期頻度), Destination Namespace や Prefix などを決めていきます.

  • Transfer
    • Replication frequency
      • 手動実行やスケジュール実行を選択できる
  • Streams
    • Destination Namespace
      • Mirror source structure, Destination default, Custom format の3種類ある
    • Destination Stream Prefix (Optional)
      • 必要に応じて付与する
  • Normalization & Transformation
    • Raw data (JSON)
    • Normalized tabular data
    • 上記どちらかを選択するが,Raw data だと json のままデータが格納されるので,Normalized tabular data で良いと思う

個人的に同期するスプレッドシートの各シートがそれぞれ表示されて,どれを同期するか選択して決められるというのが感動した 🎉

今回は1シートだけ連携することにし,Custom Transform の処理はせずに単純にデータをそのまま連携していく.

Connection

実行結果のログは以下のような感じ Sync Succeeded となっている.

Execution Logs

Airbyte 側は大丈夫そうなので,BigQuery の方も確認してみると,ちゃんと入ってるので問題なさそう!

BigQuery Logs


今回は,OSS の Airbyte を使ってスプレッドシートから BigQuery へのデータ同期を行ってみた.Airbyte は UI が用意されていて,直感的に操作できる+設定も簡単でデータ同期の体験としてとても良かったです!データソースが豊富なのもメリットとして大きいと思う.

Extract & Load のみしか使えていないので,次は dbt を理解して Transform も追加して処理を実行してみたいと思います.あとは他のデータパイプラインツールとの比較とかも出来たら楽しそうかなと思った.


このエントリーをはてなブックマークに追加

ブログ記事を読んで頂き,ありがとうございます!もしこの記事が良かったり参考になったら,「Buy me a coffee」ボタンから☕一杯をサポートして頂けるとモチベーションが上がります!どうぞよろしくお願いします🤩