Google Dataprepの本家「Trifacta」がめっちゃ良い感じのETLツールだった

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

本記事では、GUIでETL処理を構築できるSaaS、Trifactaの機能を試していきます。

ETL処理をPandasやSQLといったプログラミングベースで記述するのか、その手のGUIツールで記述するのかは、我々人類にとって永遠のテーマ。私自身はSQLで書く派ですが、その反動もあって良い感じのUI/UXに出会えると普通に感動します。それがTrifacta。

Trifactaについて

Trifactaは2012年にカリフォルニア州で創業された、データエンジニアリングのためのプラットフォームを提供するテックカンパニーです。投資ラウンドはシリーズEまで到達しており、有に10,000社以上に導入されています。"Trifacta"ってワードどこかで見たことあるなと思った方はご明察。Google Cloudで提供しているDataprepは、このTrifactaを元にしているサービスです。

Cloud Dataprep by Trifacta | Google Cloud

Trifactaでは、以下の4点をコンセプトとして掲げています。

  • Open
    • Trifactaのオープンデータエンジニアリングプラットフォームは、あらゆるデータソースに接続し、すべての主要なクラウドデータプラットフォームで実行され、既存のデータスタックにシームレスに統合
  • Interactive
    • TrifactaはAI/ML活用し、データセットの探索と変換を通じてユーザーとデータチームをガイドする、インタラクティブで視覚的なユーザーエクスペリエンス
  • Self-Service
    • 開発者と一般ユーザーの両方がデータエンジニアリングの作業でコラボレーションできるプラットフォームによって、組織的にデータプロダクトを構築
  • Enterprise Grade
    • 無制限のスケーラビリティ、組み込みのガバナンス、および最高クラスのセキュリティを備えたエンタープライズグレードのプラットフォーム

Tryfactaでは30日間の無料トライアルが可能です。Getting Started with Trifactaを適宜参考にしながら、機能を一通り触ってみました。

アカウントの作成とデータソース接続

公式HPよりSTART FREEをクリックし、ユーザー情報入力していきます。

登録したメールアドレスに送信される認証リンクをクリックし、パスワードの設定を進めていきます。

パスワード設定後、Trifactaのホーム画面にランディングします。SaaSらしいスピーディなアカウント作成でした。左メニューのConnectionsをクリックし、さっそくデータソースと接続していきます。

Create Connectionをクリックします。

対応しているデータソースの一覧が表示されます。今回はパブリックアクセス可能なRedshiftクラスタに対してConnectionを作成していきます。細かい仕様に関しては、Amazon Redshift Connections | Trifacta Docsを確認してください。

対象のエンドポイントやDB名、ユーザー名を入力していきます。

Test Connectionをクリックし、Valid Connectionが表示されればOKです。Createをクリックして保存します。

データのインポート

続いてDatasetの作成を行なっていきます。左メニューよりLibraryをクリックし、画面上部のImport Dataをクリックします。

RedshiftのConnectionのうち、publicスキーマを選択します。

テーブルが一覧表示されます。左の+をクリックするとImportが開始し、完了すると右側にプレビューが表示されるようになります。Redshiftサイドでは、SELECT * FROM <table name> LIMIT 1000000;が走っており、テーブルをほぼ丸々Trifactaにコピーしている模様です。

Continueをクリックして完了させると、インポートされたDatasetが並ぶようになります。

試しにusersの詳細を開いてみました。Refresh的なボタンが見つからなかったので、DatasetはSnapshot的な一段面のデータとして扱うことになりそうです。

Flowの作成

続いてインポートしたDatasetに対して、Flowを作成していきます。Flowとはデータ変換処理をGUIで書ける機能です。左メニューでFlowのアイコンをクリックし、Createをクリックします。

Dataset・Recipe・Outputの3つが繋がった、初期状態のFlowが表示されました。Datasetに対象とするソースをセットし、Recipeで変換処理を定義、Outputで出力先を指定する、という流れになっています。まずはDatasetのアイコンをクリックしてをセットしていきます。

先ほどインポートしたテーブルのうち、今回はusersを選択します。Addをクリックして確定させます。

Flowの編集画面に戻り、Recipeのアイコンをクリックすると右から詳細情報のドロワーが表示されます。Edit Recipeをクリックして編集画面に入ります。

編集画面の構成としては、画面上部のツールバーにはテーブル全体に対してかける変換機能、画面左半分はカラムのプレビュー、画面右半分は選択したカラムの統計値や分布などが表示される構成になっています。直感的でわかりやすい構成になってて素晴らしい。

カラム名のプルダウンをクリックすると、そのカラムに対してかける変換機能一覧が表示されます。データ変換ならどんな処理でもできそうなほど機能が豊富です。

試しに、cityカラムでGroup byのカウントを行ってみました。変換後のテーブルが下段に表示されるようになっています。Addをクリックして確定させます。

Recipeの編集は一旦以上とします。Flowの編集画面に戻ります。

最後にOutputのアイコンをクリックして、右のドロワーでManual settingsのタブをクリックすると、デフォルトの出力先パスを確認できます。とりあえずこのままRunをクリックしてFlowを実行してみます。

色々設定項目がありますが、デフォルトのままRunをクリック。

Jobのステータス画面に遷移しました。数分後、S3バケットの設定不備が原因でFailedになってしまいました。

Flowの仕様は大体把握できたので、あとはサンプルとして用意されていたExample Flow - Event log dataで動作確認をしていきます。Example Flow - Event log dataのFlowの編集画面に行き、末尾のアイコンをクリックしてCreate Output to runでOutputのアイコンを繋げて追加します。

Runをクリックします。この後表示されるパラメータもデフォルトのままでOKです。

こちらのサンプルのジョブは無事成功しました。

その他の機能

Trifactaでは、Planという機能で先ほどのFlowの依存関係や並列実行を定義したり、起動トリガーとなるスケジュールを設定できます。HTTPのリクエストやSlack通知といった機能も組み込める点が便利。

左メニューからはJob HistoryやSchedulesも一覧で確認が可能です。

あとはユーザーアカウントのアイコンから入れるAdmin consoleでは、ユーザーやロールの管理やAWSアカウントやOAuth 2.0クライアントとの連携が可能です。

デモは以上です!

所感

Trifacta、UI/UXが丁寧に設計されてて使い心地がかなり良かったです。コンセプト通り、非データエンジニアでないユーザーでも、すぐに馴染めそうな設計になってますね。また、大規模データをインポートしてももっさり感がなく、バックエンドもブラウザ側もしっかりチューニングされている点でストレスフリーでした。

AWSやマルチクラウド環境でGUIのETLツールで、SaaSでのソリューションを探している方には、かなり良い選択肢になるのではないでしょうか。

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