Meltano とは
Meltano とは、Singerという技術による ELT パイプライン向けソフトウェアであり、ELT の EL を担当します。ELT の T の部分はdbtというツールで補い、ELT を実現します。Meltano は GitLab 社からスピンアウトして独立したプロジェクトとなりました。
インストール方法
ローカルにインストールする場合
最近の Linux や MacOS のバージョンであればサポートされていますが、Windows だとサポートされていないようです。Windows で Meltano を実行したい場合は Windows Subsystem for Linux(WSL)もしくは Docker を利用することになります。また、Python のバージョンは 3.7、3.8、3.9 のいずれかである必要があります。
まずはディレクトリを作成し、仮想環境を用意します。
Meltano をインストールします。
Meltano のバージョンを確認します。
プロジェクトを作成します。
my_project ディレクトリが作成され、以下のようなファイルを確認することができます。
Docker コンテナを利用する場合
まずは Docker イメージをプルします。
Meltano のバージョンを確認します。
プロジェクトを作成します。
my_project ディレクトリが作成され、以下のようなファイルを確認することができます。
以下のコマンドを実行して、http://localhost:5000 にアクセスすると、Meltano UI が利用可能になります。
アップグレード方法
公式ドキュメントによると、Meltano は毎週新しいバージョンがリリースされるようです。最新のバージョンにするには、以下のコマンドを実行します。
プロジェクトを実行
以下、ローカル環境を用いて実行していきます。
まずは、ディレクトリ内のmeltano.yml
ファイルを確認します。
コマンドを実行したり、meltano.yml
ファイルを直接編集することのより、実行内容を定義していきます。
環境設定
以下のコマンドで環境の一覧を取得できます。デフォルトで dev 環境がアクティブとなっています。
以下のコマンドで環境を変更することができます。
新しい環境を追加した場合は以下のコマンドを実行します。
「Extractor」とは、データソースからデータを取得するプラグインです。以下のコマンドで Extractor で取得可能なデータソース一覧を確認することができます。
meltano add
コマンドにより Extractor プラグインを追加します。今回は tap-slack を追加します。
Extractor リストにデータソースが存在しない場合は、データソースの Singer tap が存在するかどうかを確認し、存在する場合はcustom pluginを追加します。
meltano.yml
ファイルにプラグインが追加されていることが確認されます。
以下のコマンドで追加した Extractor の利用方法を確認することができます。
Extractor を実行するためにはコンフィグの設定が必要になります。以下のコマンドで項目を確認することができます。もしくはこちらで確認することができます。
tap-slack の設定項目は以下のようになります。
項目 | 説明 | デフォルト値 |
---|
token | Your Slack API Token. | None |
start_date | Determines how much historical data will be extracted. | None |
channels | Optionally specify specific channels to sync. | None |
private_channels | Specifies whether to sync private channels or not. | True |
join_public_channels | Specifies whether to have the tap auto-join all public channels. | False |
archived_channels | Specifies whether the tap will sync archived channels or not. | False |
date_window_size | Specifies the window size for syncing certain streams. | 7 |
以下のコマンドでチャネル ID を登録します。コマンドを実行するとmeltano.yml
ファイルにチャネル ID が登録されます。
以下のコマンドで API トークンを登録します。コマンドを実行すると.env
ファイルに API トークンが登録されます。
以下のコマンドで start_date の設定をします。
抽出するデータの選択
コンフィグの設定が完了したら、抽出したいデータを選択します。以下のコマンドで抽出可能なデータの一覧を確認することができます。
抽出したいカテゴリを選択します。今回はカテゴリ「channels」配下にある全てのデータを取得するようにします。
選択したデータを確認します。
プラグイン「Loader」の追加
「Loader」とは、ELT の「L」を行うためのプラグインです。以下のコマンドで追加可能な Loader 一覧を確認することができます。
今回は Slack から抽出したデータを BigQuery にロードをします。以下のコマンドを実行して BigQuery の Loader を追加します。
Loader リストにロード先が存在しない場合は、ロード先の Singer target が存在するかどうかを確認し、存在する場合はcustom pluginを追加します。
Loader コンフィグの設定
credentials_path を設定します。credentials_path とは、BibQuery へのアクセス権限があるサービスアカウントのクライアントシークレットファイルのフルパスです。例えば、~/meltano-local/my_project/client_secrets.json
のようになります。
ロケーションを設定します。
project_id
最終的にmeltano.yml
ファイルは以下のように定義されています。
EL パイプラインを実行
以下のコマンドにより EL パイプラインを実行します。
無事 Slack データを BigQuery に取り込むことができました。

参考

備考
Hakky ではエンジニアを募集中です!まずは話してみたいなどでも構いませんので、ぜひお気軽に採用ページからお問い合わせくださいませ。
