Traffine I/O

日本語

2022-06-08

Meltanoのコマンド

Meltanoのコマンド

この記事では、Meltanoの主要なコマンドついて紹介します。

meltano add

meltano.addはプラグインをプロジェクトに追加するコマンドです。以下の流れの動作をします。

  1. Meltano Hubにあるプラグイン定義を参照
  2. プラグインをmeltano.ymlファイルのpluginsセクションに追加
  3. プラグイン定義を./pluginsディレクトリに保存
  4. meltano installを使用してプラグインをインストール

meltano installコマンドとは異なり、meltano addコマンドは依存関係の欠落を回避するためにプラグインを連続的にインストールします。例えば、meltano add transformerはdbtプラグインを最初にインストールするように要求します。

meltano addの例

bash
$ meltano add extractor tap-github
$ meltano add loader target-bigquery
$ meltano add transformer dbt-redshift

meltano elt

meltano eltはELTパイプラインを実行するコマンドです。各ELTパイプラインは増分レプリケーションのステートを保存し、参照するためのState IDを持っています。そのため、同じELTの組み合わせで後続のパイプラインを実行すると、前回の実行で中断したところからすぐに再開することができます。安定した識別子が--state-idフラグまたは環境変数MELTANO_STATE_IDを使用して提供されない場合、データ抽出は常にゼロから始まり、現在の日付と時刻を使用して一度限りのState IDが自動生成されます。このコマンドで生成された出力は.meltano/logs/elt/{state_id}/{run_id}/elt.logに記録されます。run_idは自動生成されるUUIDです。

パラメータ

  • --state-id: 増分レプリケーションのステートを保存したり検索する際の関連ELTを識別
  • --transform:run: Transformを実行
  • --transform:skip: Transformをスキップ(デフォルト)
  • --transform:only: ELをスキップしてTransformを実行
  • --full-refresh: 以前のステートを無視してフルリフレッシュで実行
  • --force: 新規の実行
  • --state: State IDに基づいて状態を検索する代わりにExtractorにステートファイルを手動で提供
  • --dump: 実際にパイプラインを実行する代わりにパイプライン固有の生成ファイルの内容をダンプ

meltano eltの例

bash
$ meltano elt tap-gitlab target-postgres --transform=run --state-id=gitlab-to-postgres
$ meltano elt tap-gitlab target-postgres --state-id=gitlab-to-postgres --full-refresh
$ meltano elt tap-gitlab target-postgres --state extract/tap-gitlab.state.json
$ meltano elt tap-gitlab target-postgres --state-id=gitlab-to-postgres --dump=state > extract/tap-gitlab.state.json

meltano install

meltano installmeltano.ymlファイルに基づいてプロジェクトの依存関係をインストールするコマンドです。引数を指定すると特定のプラグインのみがインストールされます。また、meltano installを続けて実行するとプラグインがすでに存在する場合は最新バージョンにアップグレードされます。

パラメータ

  • --include-related: インストールされたExtractorに関連したTransformerを自動インストール
  • --clean: プラグインを完全にアンインストールして再インストール
  • --parallelism: 並行してインストールするプラグイン数(デフォルトはマシンのCPU数)を制御。--parallelism=1にするとプラグインを一つずつインストール。

meltano installの例

bash
$ meltano install
$ meltano install extractors
$ meltano install extractor tap-gitlab
$ meltano install extractors tap-gitlab tap-adwords
$ meltano install --include-related
$ meltano install --parallelism=16
$ meltano install --clean

meltano run

meltano runは一連のコマンドブロックを直列に実行するコマンドです。例えば、meltano run foo_tap bar_target hoge_targetと指定すると左から右に順に実行されます。どのブロックでも失敗すると実行全体が中断されます。

アクティブな環境が定義されている場合は、State IDが各Extractor/Loaderペアに自動生成され、システムデータベース内の増分レプリケーションのステートを保存して検索に利用されます。そのため、同じExtractorとLoaderの組み合わせで次回実行する場合、前回の実行が終了したところから開始することができます。生成されるIDの形式は、<environment_name>:<tap_name>-to-<target_name>です。なお、環境がアクティブでない場合、meltano runはState IDを生成せず、ステートを追跡しません。

パラメータ

  • --dry-run: 実行せず、呼び出しを解析・検証・説明
  • --no-state-update: 呼び出しのステート保存を無効化
  • --full-refresh: 以前のステートを無視してフルリフレッシュで実行
  • --force: 同じ生成IDの競合ジョブが進行中であってもジョブを強制的に実行

meltano runの例

# Run the pipeline in series and
# The auto-generated ID for the first EL pair is 'dev:tap-gitlab-to-target-postgres'
# The auto-generated ID for the second EL pair is 'dev:tap-salesforce-to-target-mysql'
$ meltano --environment=prod run tap-gitlab target-postgres tap-salesforce target-mysql

# Run pipeline in series, full refresh run
$ meltano --environment=stg run --full-refresh tap-gitlab target-postgres tap-salesforce target-mysql ...

# Run pipelines in series, forcing each one to run if a strong job is found
$ meltano --environment=dev run --force tap-gitlab target-postgres tap-salesforce target-mysql ...

meltano job

meltano jobは一つまたは複数のタスクの順序を定義するコマンドです。meltano runにジョブ名を引数に渡すことで指定したジョブを実行することができます。

meltano jobの例

# Add job "simple-demo" with two tasks
# Task 1: tap-gitlab target-mysql dbt-postgres:run
# Task 2: tap-gitlab target-csv
$ meltano job add simple-demo --tasks "[tap-gitlab target-postgres dbt-postgres:run, tap-gitlab target-csv]"

# list job "simple-demo"
$ meltano job list simple-demo --format=json

# Run job "simple-demo
$ meltano run simple-demo

# Run job "simple-demo" and other EL pairs
$ meltano run simple-demo tap-mysql target-bigquery

# Delete job "simple-demo"
$ meltano job remove simple-demo

meltano schedule

meltano scheduleは定期的に実行されるELTやジョブのパイプラインを定義するコマンドです。Orchestratorプラグインのインストールが必要になります。

meltano scheduleの例

# Add schedule "gitlab-sync" to run job "gitlab-to-mysql" daily
$ meltano schedule add gitlab-sync --job gitlab-to-mysql --interval "@daily"

# Dry run schedule "gitlab-sync" $ meltano schedule run gitlab-sync --job gitlab-to-mysql --interval "@daily
$ meltano schedule run gitlab-sync --dry-run

# Change schedule "gitlab-sync" job to "gitlab-to-postgres" $ meltano schedule set gitlab-sync --dry-run
$ meltano schedule set gitlab-sync --job gitlab-to-postgres

# Change schedule "gitlab-sync" to weekly
$ meltano schedule set gitlab-sync --interval "@weekly"

参考

https://docs.meltano.com/reference/command-line-interface

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!