Clouderaが買収したETLパイプラインの「Datacoral」でデータロードしてみた

本記事では、ETLパイプラインサービスのDatacoralを紹介しつつデモを実施していきます。

ETLパイプラインを構築する場合、dbtを中心に添えるのが最近のトレンドになりつつありますが、「対抗馬もご紹介していかねば!」と思いDatacoralをピックアップしました。

Datacoralについて

Datacoralは、2016年にサンフランシスコで創業されたスタートアップです。2018年にシリーズAで$10Mの資金調達に成功しましたが、2021年1月にClouderaが買収したことでExitしております。

Datacoralは、主に各種データソースをノーコードで繋げてパイプラインを構築するサービスです。対応しているインテグレーション数も多く、CDCでの差分更新できたりと、パイプライン構築に便利な機能が備わっています。データ変換を記述するTransformationでは、SQLで変換処理を記述しつつ、データの依存関係も同時に定義することができる機能となっています。

Datacoralでは無料トライアルが可能です。早速セットアップして試してみました!

セットアップとIngestion

公式HPよりSign Upをクリックします。

DatacoralではGoogle認証によるサインアップが可能です。今回はこちらでアカウント作成を進めていきます。

任意のチーム名を指定してNextをクリック。

Datacoralをホスティングするタイプを選べます。マネージド型で試したいのでHOSTED BY DATACORALSelectします。

リージョンの選択画面です。東京リージョンは選択できなかったので、us-west-2を選択します。その後Datacoral側でデプロイ処理が走ります。表記では60分~90分となっていますが、この検証では2時間半ほどかかりました。

デプロイ完了後、通知メールのリンクをクリックすると、ターゲットとするDWHの選択画面に入ります。今回はパブリックに配置したRedshiftクラスタに対して設定を行なっていきます。

エンドポイントの情報などを入力していきます。ちなみにRedshiftがプライベートサブネットにある場合は、DatacoralのElastic IPに対して解放するか、VPC Peeringを使うかの方法になってきます。詳しくは Configure Existing Redshift Cluster for Datacoral | Datacoral Documentation をご覧ください。

設定を確定させると接続テストが自動で走ります。

続いてConnectorを作成していきます。DatacoralでいうConnectorは、Destinationに対してデータを連携する、いわゆるデータソース的なものです。Destinationに比べて、インテグレーションの種類が豊富に用意されていますね。今回はパブリックに配置したRDS PostgreSQLのサンプルデータを、RedshiftにロードするIngestionを設定していきます。

PostgreSQLのエンドポイントやユーザー情報を入力します。

次の画面で、ロードの間隔を設定したり、事前に文字列で対象・対象外とするテーブルを決めたりできます。

接続先のテーブル一覧が表示されるので、ロードの対象とするテーブルを選択してNextをクリックします。

作成完了後、Ingestionの画面に飛びます。デフォルトではDisabledになっており、Enableに切り替えると設定したスケジュールに沿ってロードが実施されます。

完了したテーブルは緑、処理中のテーブルは黄緑でステータスを確認できます。UIがシンプルで見やすい。

Redshift側では、Ingestion作成時に名前として指定したharutardsがスキーマとして自動で作成され、その配下にテーブルが作成される仕様になっています。データロードも無事成功していました。

Redshift側の実行クエリを見てみると、COPYが活用されていることが確認できます。PostgreSQLのデータを一旦S3バケットにエクスポートし、そのデータをCOPYコマンドでRedshiftにロードしているみたいです。

Transformation

続いて、Redshiftにロードされたデータに対して、変換ジョブを作成していきます。上部のメニューよりSQL Transformationsをクリックし、右上のAdd a transformationをクリックします。

Transformationの実態は、Redshiftの場合はマテリアライズドビューです。Destinationには、出力先に設定するスキーマ名とテーブル名を指定します。更新のインターバルを指定し、変換ロジックとなるSQLも記述します。

依存関係を記述したい場合は、JSON形式でテーブル名を指定できます。その他、分散キーやソートキーの指定も可能です。Add Transformationをクリックして設定を完了させます。

作成したTransformationの詳細画面に遷移しました。この画面ではインターバルの調節ができる他、ステータスや依存関係の確認などが可能です。

その他の機能

最後にその他の機能をサクッと紹介します。DatacoralではPythonなどでユーザー定義関数を作成して、バッチジョブを実行することが可能です。

UDFの詳細画面からは、コンピュートリソースの割り当てやInputとOutputが確認できます。

画面右上のアイコンは管理系のメニューです。User Setteingsでは、プロフィールの確認やDestinationの変更、通知用エンドポイントの確認ができるようになっています。

各ユーザーの管理はUsers Managementから追加・変更が可能です。

ユーザーに付与できる権限は、Admin``Member``Read Onlyの3種類でした。そこまで細かい機能がないので、3種類で必要十分でしょう。

Datacoral CLI

DatacoralはUIが簡素な作りになっていましたが、基本的に全ての機能はCLIから実施できます。メニューのGet Datacoral CLIをクリックして表示される以下のコマンドを実行すると、DatacoralのCLIがローカル端末にインストールされます。

$ curl -Lo installer.sh "https://static.datacoral.io/prod/cli/installer.sh"; chmod a+x installer.sh

$ ./installer.sh --team-key d6fc7230-5c8f-11ec-8017-3faa8d5254cd --user-key c85f72e0-5c8f-11ec-8017-3faa8d5254cd  --installation-name according5101 --aws-account-name default --aws-region us-west-2 --aws-availability-zone us-west-2a

$ datacoral authenticate
2021-12-14T19:07:27+09:00 - info: Successfully authorized
2021-12-14T19:07:27+09:00 - info: Storing service auth token at /Users/haruta.takumi/.datacoral/token.json
2021-12-14T19:07:27+09:00 - info: Storing team name and user name at /Users/haruta.takumi/.datacoral/config

試しに、先ほどUIで作成したものと同じTransformationを作成してみます。target.sqlという名前で以下のSQLファイルを作成しておきます。

select * from harutards.actor;

datacoral organize matview-createに種々のパラメータを指定して実行した結果です。CLIベースでリソースの定義ができると、他のツールとも連携しやすそうですね。

$ datacoral organize matview-create \
    --matview-schema harutards \
    --matview-name target \
    --matview-type regular \
    --interval-in-minutes 5 \
    --query file://target.sql \
    --sort-keys 'compound sortkey(actor_id)' \
    --dist-key 'distkey(actor_id)'
Materialized view has been successfully created. Use the following command to know the status of the materialized view: 
datacoral organize matview-stats --matview-schema harutards --matview-name target

ご紹介は以上です!公式ドキュメントも公開されているので、興味がある方は以下のリンクもご参照ください。

Datacoral Documentation | Datacoral Documentation

所感

種々の機能がシンプルかつ丁寧に作られており、なかなかクオリティの高いETLツールでした。機能の数がまだ少なめなので、今後どのようなツールになっていくのか個人的にかなり楽しみです。

本アドベントカレンダーでは、今話題のデータ関連SaaSを取り上げていきますので、引き続き乞うご期待ください!