Traffine I/O

日本語

2022-06-07

Meltanoの環境の扱い

Meltanoの環境

Meltanoでは、開発環境や本番環境に合わせて環境変数を管理したり切り替えたりすることができます。複数環境の定義はmeltano.ymlに記述され、以下のようになります。

meltano.yml
environments:
  - name: prod
    config:
      plugins:
        extractors:
          - name: tap-github
            config:
              organizations: [Meltano]
            select: ['*.*']
        loaders:
          - name: target-snowflake
            config:
              dbname: prod
              warehouse: prod_wh
              batch_size_rows: 100000
    env:
      SOME_PROD_ONLY_SETTING: abc
  - name: dev
    config:
      plugins:
        extractors:
          - name: tap-github
            config:
              organizations: [MeltanoLabs]
            select: ['repositories.*']
        loaders:
          - name: target-snowflake
            config:
              dbname: dev
              warehouse: dev_wh
              batch_size_rows: 1000

環境の継承

同じベースのプラグインを異なる設定で複数利用したい場合は、既存のプラグインを継承した新しいプラグインを追加することができます。新しいプラグインはベースプラグインの設定を継承し、必要に応じて上書きすることができます。

meltano.yml
.
.
.
plugins:
  extractors:
  - name: tap-google-analytics
    variant: meltano
    config:
      key_file_location: client_secrets.json
      start_date: '2020-10-01T00:00:00Z'
  - name: tap-ga--view-foo
    inherit_from: tap-google-analytics
    config:
      # key_file_location and start_date are inherited
      view_id: 123456
  - name: tap-ga--view-bar
    inherit_from: tap-google-analytics
    config:
      # key_file_location is inherited
      start_date: '2020-12-01T00:00:00Z' # start_date is overwritten
      view_id: 789012

環境変数のマッピング

Meltanoでは、以下のように環境変数をマッピングすることができます。

meltano.yml
environments:
  - name: dev
    env:
      MY_ENV_VAR: $MELTANO_PROJECT_ROOT/path/to/a/file.json

環境の指定

以下の方法で環境を指定することができます。

  • CLIコマンドで--environmentオプションを追加する
bash
$ meltano --environment=dev run tap-github target-csv
  • MELTANO_ENVIRONMENTを設定する
bash
$ export MELTANO_ENVIRONMENT=dev
$ meltano run tap-github target-csv

また、meltano.ymlファイルにdefault_environment: stagingなどを記述することでデフォルトの環境を指定することができます。

参考

https://docs.meltano.com/concepts/environments

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!