Meltano は ELT 処理の EL の部分を担当します。ELT の T(Transform)の部分はdbtというツールで補います。こちらを参考に、Meltano の環境構築を行なった後、Meltano で dbt を利用し、Transform を実行していきます。
dbt をインストール
dbt をインストールします。まずは以下のコマンドでインストール可能な dbt を確認します。
公式ドキュメントでは、dbt
をインストールすることも可能ですが、dbt-redshift
など特定の dbt プラグインをインストールすることを推奨しています。今回は dbt-bigquery を利用し、Transform を実行していきます。以下のコマンドで dbt-bigquery をインストールします。
dbt-bigquery のコンフィグ一覧を確認します。
または、以下の公式ドキュメントで確認することができます。
以下の設定項目が確認されます。
項目 | 説明 | デフォルト値 |
---|
project_dir | Project path | '$MELTANO_PROJECT_ROOT/transform' |
profiles_dir | Profile path | '$MELTANO_PROJECT_ROOT/transform/profiles/bigquery' |
auth_method | "oauth", "oauth-secrets", or "service-account" | None |
project | Project ID | None |
dataset | Dataset | None |
refresh_token | Refresh token if oauth-secrets method | None |
client_id | Client ID if oauth-secrets method | None |
client_secret | Client Secret if oauth-secrets method | None |
token_uri | Token redirect URI | None |
keyfile | Path to `keyfile.json`` if service-account method | None |
project
、dataset
、auth_method
、keyfile
の設定を以下のコマンドで行います。(meltano.yml ファイルを直接編集することも可能です。)
meltano.yml
ファイルは以下のようになっています。
dbt の処理を記述
現在、/transform
ディレクトリには以下のファイルが存在します。
こちらを参考に、/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
ファイルを以下のように編集することにより、カスタムコマンドを作成することができます。
dbt プロジェクトを別の git リポジトリから参照
これまで、/transform/
ディレクトリに直接 dbt のコードを記述しましたが、/transform/
ディレクトリにpackage.yml
ファイルを作成し、以下のような記述をすることで meltano プロジェクトと dbt プロジェクトを切り離すことができます。
参考

備考
Hakky ではエンジニアを募集中です!まずは話してみたいなどでも構いませんので、ぜひお気軽に採用ページからお問い合わせくださいませ。
