MeltanoのTransform
Meltanoでは、ELTのT(Transform)の部分はdbtで補います。この記事では、MeltanoでTransformを行う方法について紹介します。
dbtのインストール
以下のコマンドでインストール可能なdbtを確認します。
$ meltano discover transformers
dbt-bigquery
dbt-postgres
dbt-redshift
dbt-snowflake
dbt
dbt
をインストールすることも可能ですが、dbt-snowflake
など特定のdbtプラグインをインストールすることが推奨されています。今回はdbt-bigquery
を利用し、Transformを実行していきます。以下のコマンドでdbt-bigquery
をインストールします。
$ meltano add transformer dbt-bigquery
dbt-bigquery
のコンフィグ一覧を確認します。
$ meltano config dbt-bigquery list
または、以下の公式ドキュメントで確認することができます。
以下のコマンドで、dbt-bigquery
のコンフィグであるproject
、dataset
、auth_method
、keyfile
の設定を行います。(meltano.yml
ファイルを直接編集することも可能です。)
$ meltano config dbt-bigquery set project "YOUR_PROJECT_ID"
$ meltano config dbt-bigquery set dataset "YOUR_DATASET"
$ meltano config dbt-bigquery set auth_method "service-account"
$ meltano config dbt-bigquery set keyfile "PATH/TO/YOUR/KEYFILE"
meltano.yml
ファイルは以下のようになります。
.
.
.
environments:
- name: dev
config:
plugins:
transformers:
- name: dbt-bigquery
config:
project: YOUR_PROJECT_ID
dataset: YOUR_DATASET
auth_method: service-account
keyfile: PATH/TO/YOUR/KEYFILE
dbtの処理を記述
/transform
ディレクトリには以下のファイルが存在します。
$ ls /transform
dbt_project.yml
profile
models
/transform/models/
ディレクトリにSQLを記述し、/transform/dbt_project.yml
ファイルを任意で編集します。
dbtを実行
以下の2種類の方法でdbtを実行することが可能です。
- ELTパイプラインとして
run
コマンドを実行meltano run tap-github target-bigquery dbt-bigquery:run
など
- スタンドアローンとして
invoke
コマンドを実行meltano invoke dbt-bigquery run
また、meltano.yml
ファイルを以下のように編集することにより、カスタムコマンドを作成することができます。
.
.
.
plugins:
transformers:
- name: dbt-bigquery
commands:
my_models:
args: run --select +YOUR_MODEL_NAME
description: Run dbt, selecting model `YOUR_MODEL_NAME` and all upstream models.
$ meltano run tap-github target-bigquery dbt-bigquery:my_models
$ meltano invoke dbt-bigquery:my_models
dbtプロジェクトを外部リポジトリから参照
/transform/
ディレクトリに直接dbtのコードを記述する他に、/transform/
ディレクトリにpackage.yml
ファイルを作成し、以下のような記述をすることでmeltanoプロジェクトとdbtプロジェクトを切り離すことができます。
packages:
- git: https://github.com/your_repo/your-dbt-project.git
revision: 1.0.0
参考