Clouderaが買収したETLパイプラインの「Datacoral」でデータロードしてみた
本記事では、ETLパイプラインサービスのDatacoralを紹介しつつデモを実施していきます。
ETLパイプラインを構築する場合、dbtを中心に添えるのが最近のトレンドになりつつありますが、「対抗馬もご紹介していかねば!」と思いDatacoralをピックアップしました。
Datacoralについて
Datacoralは、2016年にサンフランシスコで創業されたスタートアップです。2018年にシリーズAで$10Mの資金調達に成功しましたが、2021年1月にClouderaが買収したことでExitしております。
- Datacoral Documentation | Datacoral Documentation
- Cloudera Agrees to Acquire SaaS Companies Datacoral and Cazena
Datacoralは、主に各種データソースをノーコードで繋げてパイプラインを構築するサービスです。対応しているインテグレーション数も多く、CDCでの差分更新できたりと、パイプライン構築に便利な機能が備わっています。データ変換を記述するTransformationでは、SQLで変換処理を記述しつつ、データの依存関係も同時に定義することができる機能となっています。
Datacoralでは無料トライアルが可能です。早速セットアップして試してみました!
セットアップとIngestion
公式HPよりSign Up
をクリックします。
DatacoralではGoogle認証によるサインアップが可能です。今回はこちらでアカウント作成を進めていきます。
任意のチーム名を指定してNext
をクリック。
Datacoralをホスティングするタイプを選べます。マネージド型で試したいのでHOSTED BY DATACORAL
をSelect
します。
リージョンの選択画面です。東京リージョンは選択できなかったので、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を取り上げていきますので、引き続き乞うご期待ください!