Traffine I/O

日本語

2022-06-06

MeltanoでのTranaformの実行

MeltanoのTransform

Meltanoでは、ELTのT(Transform)の部分はdbtで補います。この記事では、MeltanoでTransformを行う方法について紹介します。

dbtのインストール

以下のコマンドでインストール可能なdbtを確認します。

bash
$ meltano discover transformers

dbt-bigquery
dbt-postgres
dbt-redshift
dbt-snowflake
dbt

dbtをインストールすることも可能ですが、dbt-snowflakeなど特定のdbtプラグインをインストールすることが推奨されています。今回はdbt-bigqueryを利用し、Transformを実行していきます。以下のコマンドでdbt-bigqueryをインストールします。

bash
$ meltano add transformer dbt-bigquery

dbt-bigqueryのコンフィグ一覧を確認します。

bash
$ meltano config dbt-bigquery list

または、以下の公式ドキュメントで確認することができます。

https://hub.meltano.com/transformers/dbt-bigquery

以下のコマンドで、dbt-bigqueryのコンフィグであるprojectdatasetauth_methodkeyfileの設定を行います。(meltano.ymlファイルを直接編集することも可能です。)

bash
$ 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ファイルは以下のようになります。

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ディレクトリには以下のファイルが存在します。

bash
$ 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ファイルを以下のように編集することにより、カスタムコマンドを作成することができます。

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.
bash
$ meltano run tap-github target-bigquery dbt-bigquery:my_models
$ meltano invoke dbt-bigquery:my_models

dbtプロジェクトを外部リポジトリから参照

/transform/ディレクトリに直接dbtのコードを記述する他に、/transform/ディレクトリにpackage.ymlファイルを作成し、以下のような記述をすることでmeltanoプロジェクトとdbtプロジェクトを切り離すことができます。

transform/package.yml
packages:
  - git: https://github.com/your_repo/your-dbt-project.git
    revision: 1.0.0

参考

https://docs.meltano.com/getting-started
https://docs.meltano.com/guide/transformation

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!