Meltanoのコマンド
この記事では、Meltanoの主要なコマンドついて紹介します。
meltano add
meltano.add
はプラグインをプロジェクトに追加するコマンドです。次の流れの動作をします。
- Meltano Hubにあるプラグイン定義を参照
- プラグインを
meltano.yml
ファイルのplugins
セクションに追加 - プラグイン定義を
./plugins
ディレクトリに保存 meltano install
を使用してプラグインをインストール
meltano install
コマンドとは異なり、meltano add
コマンドは依存関係の欠落を回避するためにプラグインを連続的にインストールします。例えば、meltano add transformer
はdbtプラグインを最初にインストールするように要求します。
meltano addの例
$ 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の例
$ 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 install
はmeltano.yml
ファイルに基づいてプロジェクトの依存関係をインストールするコマンドです。引数を指定すると特定のプラグインのみがインストールされます。また、meltano install
を続けて実行するとプラグインがすでに存在する場合は最新バージョンにアップグレードされます。
パラメータ
--include-related
: インストールされたExtractorに関連したTransformerを自動インストール--clean
: プラグインを完全にアンインストールして再インストール--parallelism
: 並行してインストールするプラグイン数(デフォルトはマシンのCPU数)を制御。--parallelism=1
にするとプラグインを一つずつインストール。
meltano installの例
$ 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"
参考