Meltanoとは
Meltanoとは、SingerによるELTパイプライン向けソフトウェアであり、ELTのELを担当します。ELTのTの部分はdbtで補い、ELTを実現します。
Meltanoのインストール方法
ローカルにインストールする場合
- 仮想環境を用意します。
$ python -m venv venv
$ source venv/bin/activate
$ pip install --upgrade pip
- Meltanoをインストールします。
$ pip install meltano
- プロジェクトを作成します。
$ meltano init my_project
my_project
ディレクトリが作成され、次のようなファイルを確認することができます。
my_project/
|-- .meltano
|-- meltano.yml
|-- README.md
|-- requirements.txt
|-- output/.gitignore
|-- .gitignore
|-- extract/.gitkeep
|-- load/.gitkeep
|-- transform/.gitkeep
|-- analyze/.gitkeep
|-- notebook/.gitkeep
|-- orchestrate/.gitkeep
Dockerコンテナを利用する場合
- Dockerイメージをプルします。
$ docker pull meltano/meltano
- プロジェクトを作成します。
$ mkdir meltano-docker && cd meltano-docker
$ docker run -v "$(pwd)":/projects \
-w /projects \
meltano/meltano init my_project
次のコマンドを実行し、http://localhost:5000
にアクセスすると、Meltano UIが利用可能になります。
$ docker run -v "$(pwd)":/project \
-w /project \
-p 5000:5000 \
meltano/meltano
Meltanoのアップグレード方法
最新のバージョンにするには、次のコマンドを実行します。
$ meltano upgrade
プロジェクトを実行
meltano.yml
ファイルは次のようになっています。
version: 1
default_environment: dev
project_id: <UUID>
environments:
- name: dev
- name: staging
- name: prod
コマンドを実行したり、meltano.yml
ファイルを直接編集することで、実行内容を定義していきます。
環境設定
次のコマンドで環境の一覧を取得できます。デフォルトでdev
環境がアクティブとなっています。
$ meltano environment list
2022-05-15T23:31:35.498763Z [info ] Environment 'dev' is active
dev
staging
prod
次のコマンドで環境を変更することができます。
$ export MELTANO_ENVIRONMENT=prod
新しい環境を追加したい場合は次のコマンドを実行します。
$ meltano environment add <NEW ENVIRONMENT NAME>
Extractorの追加
「Extractor」とは、データソースからデータを取得するプラグインです。次のコマンドでExtractorで取得可能なデータソース一覧を確認することができます。
$ meltano discover extractors
meltano add
コマンドによりExtractorプラグインを追加します。今回はtap-slack
を追加します。
$ meltano add extractor tap-slack
Extractorリストにデータソースが存在しない場合は、データソースのSinger tapが存在するかどうかを確認し、存在しない場合はカスタムプラグインを追加します。
meltano.yml
ファイルにtap-slack
が追加されていることが確認されます。
plugins:
extractors:
- name: tap-slack
variant: mashey
pip_url: git+https://github.com/Mashey/tap-slack.git
次のコマンドで追加したExtractorの利用方法を確認することができます。
$ meltano invoke tap-slack --help
Extractorのコンフィグの設定
Extractorを実行するためにはコンフィグの設定が必要になります。次のコマンドで項目を確認することができます。
$ meltano config tap-slack list
もしくは次のリンクから確認することができます。
コンフィグの設定を行います。
$ meltano config tap-slack set channeles '[YOUR CHANNEL ID]'
$ meltano config tap-slack set token <YOUR API TOKEN>
$ meltano config tap-slack set start_date 2022-05-02T00:00:00Z
抽出するデータの選択
コンフィグの設定が完了したら、抽出したいデータを選択します。次のコマンドで抽出可能なデータの一覧を確認することができます。
$ meltano select tap-slack --list --all
抽出したいカテゴリを選択します。今回はカテゴリ「channels」配下にある全てのデータを取得するようにします。
$ meltano select tap-slack channels "*"
選択したデータを確認します。
$ meltano select tap-slack --list
Loaderの追加
「Loader」とは、ELTの「L」を行うためのプラグインです。次のコマンドで追加可能なLoader一覧を確認することができます。
$ meltano discover loaders
今回はSlackから抽出したデータをBigQueryにロードをします。次のコマンドを実行してBigQueryのLoaderを追加します。
$ meltano add loader target-bigquery
Loaderリストにロード先が存在しない場合は、ロード先のSinger targetが存在するかどうかを確認し、存在しない場合はカスタムプラグインを追加します。
Loaderのコンフィグの設定
credentials_path
を設定します。credentials_path
とは、BibQueryへのアクセス権限があるサービスアカウントのクライアントシークレットファイルのフルパスです。例えば、~/mymeltano/my_project/client_secrets.json
のようになります。
$ meltano config target-bigquery set credentials_path <FULL/PATH/TO/CREDENTIAL FILE>
その他のコンフィグを設定します。
$ meltano config target-bigquery set location asia-northeast1
$ meltano config target-bigquery set project_id <PROJECT ID>
meltano.yml
ファイルは次のようになります。
version: 1
default_environment: dev
project_id: 6e1e3687-a9eb-4c67-8be1-493b37cf4f5d
plugins:
extractors:
- name: tap-slack
variant: mashey
pip_url: git+https://github.com/Mashey/tap-slack.git
loaders:
- name: target-bigquery
variant: adswerve
pip_url: git+https://github.com/adswerve/target-bigquery.git@0.11.3
environments:
- name: dev
config:
plugins:
extractors:
- name: tap-slack
config:
channeles: '[<CHANNEL ID>]'
start_date: '2022-06-01T00:00:00Z'
select:
- channels.*
loaders:
- name: target-bigquery
config:
credentials_path: <FULL/PATH/TO/CREDENTIAL FILE>
location: asia-northeast1
project_id: <Project ID>
- name: staging
- name: prod
EL パイプラインを実行
次のコマンドによりELパイプラインを実行すると、SlackのデータがBigQueryにロードされます。
$ meltano run tap-slack target-bigquery
参考