LoginSignup
10
0

More than 3 years have passed since last update.

Embulkを活用して、MySQLのデータをBigQueryにロードする

Last updated at Posted at 2019-12-06

この記事について

Embulkを活用して、MySQLのデータをBigQueryにロードする方法についてまとめた記事です

なぜBigQueryにデータをロードするのかといった部分についても触れています

Embulkとは?

様々な環境間に対応しているデーターローダーです

Embulk is a parallel bulk data loader that helps data transfer between various storages, databases, NoSQL and cloud services.

Embulkのリポジトリより引用

embulkのインストール

最新版のv0.9.21ではJava8が必要です

curl --create-dirs -o ~/.embulk/bin/embulk -L "https://dl.embulk.org/embulk-latest.jar"
chmod +x ~/.embulk/bin/embulk
echo 'export PATH="$HOME/.embulk/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

pluginのインストール

今回使うinputとoutputのpluginもインストールします

embulk gem install embulk-input-mysql
embulk gem install embulk-output-bigquery

Embulkは前述の通り、様々なインプット/アウトプットに対応しています

実行したいインプット/アウトプットに対応したpluginをインストールしましょう!

他のpluginに関しては公式からご確認ください

設定ファイル

Embulkは設定ファイルをymlで記述します

また変数にも対応しており、その場合はliquidで記述し、ファイル名もconfig.yml.liquidとなります

設定例

in:
  type: mysql
  host: {{ env.DB_HOST }}
  user: {{ env.DB_USER }}
  password: {{env.DB_PASS}}
  database: {{env.DB_DATABASE}}
  table: posts
  select: "id,title,body,created_at,updated_at"

out:
  type: bigquery
  location: {{env.BIG_QUERY_LOCATION}}
  mode: replace
  table: posts
  auth_method: json_key
  json_keyfile:  {{env.GOOGLE_APPLICATION_CREDENTIALS}}
  project: {{env.BIG_QUERY_PROJECT}}
  dataset: {{env.BIG_QUERY_DATASET}}
  compression: GZIP
  auto_create_table: true
  allow_quoted_newlines: true

設定項目の説明

in:select

どのデータを抽出し、ロードするか選択します

移行する必要のないデータはこのタイミングで除外しておきます

out:mode

5つのモードがあり、主要なのは appendreplace の2つです

append はデータを追記していくモード、

replace はデータを書き換えしていくモード となります

out:auto_create_table

BigQuery側にテーブルが存在しない場合、自動で作成するモードです

スキーマの設定は3種類あります

  • schema.json
  • テンプレートテーブル
  • Embulkからの推測

詳細はこちら

細かい設定について

その他の設定項目は下記からご確認ください

embulk-input-mysql

embulk-output-bigquery

実行

embulk run {$設定ファイルパス}

これだけでローディングが完了します!

なぜやるのか?

BigQueryに集約することで権限管理の手間を減らす

DBに直接アクセスするような場合は分析用のアカウントをつくるケースが多いかと思いますが、

その場合は共通アカウントになってしまい、実際に誰が使えるのか不透明になってしまい、権限管理に手間が増えます

BigQueryはGCPのIAMで管理できるため、ユーザー単位の細かい権限管理も手間なく行えます

データポータル, スプレッドシートとの連携で可視化を簡単に

BigQueryはデータポータルとの連携もサポートしており、可視化、ダッシュボードの作成も容易です

データポータルからBigQueryへのアクセスも上記と同じ用にIAMで管理できるため手間がかかりません

G Suite の Business、Enterprise、Education プランであればスプレッドシートとの連携も容易で、利用の幅が広がります

FirebaseAnalyticsや他のデータとの連携した分析を可能にする

アプリのイベントデータをFirebaseAnalyticsで計測、収集している場合はサービス側のDBと照らし合わせて分析したいケースも多いかと思います

BigQuery上にデータを集めることで、JOINも可能になるので分析がはかどります

※ JOINを可能にするにはデータを同じロケーションに設定する必要があります

10
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
10
0