データレイク上にETLパイプラインを構築するSaaS「Upsolver」を触ってみた

本記事では、ストリームデータのETLプラットフォームである Upsolver を試していきます。

「GUIのETLツール…?もうお腹いっぱいだよぉ…。」という方に向けて、さらに胸焼けさせちゃいますね。テヘッ☆

Upsolverについて

Upsolverは2014年にカリフォルニア州で創業されたスタートアップです。2021年4月にシリーズBで$25Mの資金調達に成功しており、順調に事業規模を成長させています。

Upsolver Raises $25M Series B Round to Reinvent Analytics on Cloud Data Lakes | Business Wire

Upsolverでは、企業のデータレイクに存在するストリームデータのなどを対象に、ローコードでETL処理が書けるプラットフォームを提供しています。公式からは特徴として以下の7点を挙げています。

  • データパイプラインの複雑さを除去する
    • Eliminate the Complexity of Data Pipeline Engineering
  • Visual IDEを使用して、高性能の宣言型データパイプラインを構築
    • Build High-Performance, Declarative Data Pipelines with a Visual IDE
  • パイプラインのオーケストレーションとデータレイクのテーブル管理を自動化する
    • Automate Pipeline Orchestration and Data Lake Table Management
  • 複雑なデータでも大規模処理が可能
    • High Performance at Scale on Complex Data
  • UIからストリーム、ファイル、データベースの取り込みが可能
    • UI-Driven Ingestion from Streams, Files, Databases
  • データレイク、データウェアハウス、データベース、ストリームに継続的にデータを提供
    • Continuously Serve Data to Lakes, Warehouses, Databases and Streaming Systems
  • クラウドコンピューティングとデータエンジニアリングのコストを50〜75%削減
    • 50-75% Lower Cloud Compute and Data Engineering Costs

次節からデモの実施に入りますが、今回Redshiftをターゲットとしてしまったため、Upsolverの本領をあまり発揮できなかったかもしれません。あらかじめご了承ください。「どんな機能があるのか?」や「パイプライン構築の流れ」ぐらいであれば、ざっくり把握できるかなとは思っています。

アカウント開設とAWS連携

公式HPより、START FOR FREEをクリックします。

GoogleやMicrosoftアカウントでのサインアップも可能です。今回はGoogleアカウントで認証を進めました。

会社情報を入力してSIGN UPをクリック。

Upsolverのオンボーディング画面に到着しました。Sandbox環境があるみたいですが、最初からAWSのインテグレーションを進めていきます。

選択肢として、自身のAWSアカウントにデプロイするか、UpsolverのAWSアカウントにデプロイするか選べます。ここはなるべくマネージドにいきたいので、Multi-Tenant Deploymentを選択。リージョンも東京リージョンを指定できました。

続いて、用意されているCloudFormationのテンプレートで、自分のAWSアカウント側にS3バケットやIAM Roleを作成します。これを使ってUpsolverのAWSアカウントから、自分のAWSアカウントのリソースにアクセスさせます。LAUNCHをクリック。

記入するパラメータもほぼないので、下部にチェックマークを入れてスタックの作成をクリックします。

作成されたリソースは、AthenaやS3、KinesisにアクセスするIAM Roleと専用のS3バケットです。

Upsolverの画面に戻ると、インテグレーション完了の画面に切り替わってました。Doneを押してAWS連携は完了です。

Data Sourceの追加と機能

次に、Data Sourceの追加を行っていきます。今回対象とするのはパブリックに配置してRedshiftクラスタです。Redshiftには立ち上げ時に挿入できるサンプルデータを作成済みです。UpsolverではJDBCドライバ経由で接続していきます。

Data Source名と処理を行うコンピュートの選択、出力先のストレージを設定します。ここは全てデフォルトです。

Redshiftの接続情報を記述します。UpsolverのData Sourceはテーブルと1対1で紐づくみたいですね。TIMESTAMP COLUMNSがoptionalとはなってますが、レコード挿入時インクリメンタルに自動生成されるカラムがない場合は、TIMESTAMP COLUMNSの指定を要求されます。そのため、今回はサンプルデータのうちsalesテーブルのsaletimeを入れておきました。

確定するとプレビューが表示されます。そのままCREATEをクリック。

Data Sourceの作成が完了しました。画面構成を軽く見ていきます。

SCHEMAタブのdataに対しては、カラムのデータ型やKey情報、ユニーク数などのメタデータが確認できます。ただし、S3に出力されたデータはLIMIT 100で絞った上澄み100件であり、ランダムサンプリングではないため偏りはありそうです。

カラムレベルに掘り下げると分布などが確認できます。

SAMPLESでは文字通りデータプレビューを確認できます。

LINEAGEはOutputを作成しないと表示されないようです。さっそくOutputを作成していきましょう。

Outputの作成と機能

左メニューよりOUTPUTSをクリックし、NEW OUTPUTをクリックして新規作成します。

ターゲットとしてRedshiftを選択します。

Data Sourceとして先ほど作成したharuta-demoを選択します。

変換処理の編集画面に到着しました。上のバーににカラムに対する数値計算や検索、集計用の機能が並び、左にデータソースのカラム、右にOutputとなるカラム一覧が並ぶ構成になっています。試しにAdd Aggregationをクリックして、集計関数を挿入していきます。

さまざまな関数が用意される中、無難にCOUNTを選択しました。

新たなFieldが追加されました。右上のボタンでSQL表示に切り替えることもできます。

エンジニアにとってはこちらの表示形式が馴染みやすいですね。GUIで書く変換処理とSQL文が連動している仕様はなかなか良いですね。

RUNをクリックしてOutputを実行していきます。

Output先の設定画面が表示されます。Outputに関しては、Connectionという接続情報を作成した上で選択する必要があるみたいです。Create your first Amazon Redshift Connectionをクリックして新規作成します。

エンドポイントやユーザー名、パスワードを入力し、CREATEをクリックして作成します。

Output先の設定画面に戻り、作成したConnectionや対象とするスキーマ・テーブル名を選択します。

対象とする時間範囲を設定し、DEPLOYをクリックして確定させます。この辺りの機能はリアルタイムデータを扱う際に活躍してくれそうです。

作成が完了すると、そのOUTPUTの詳細画面に移ります。実行ログなどを追うためのダッシュボードが構築されてますね。

Redshift側では、テーブルだけ作成されていて中身は空っぽという状態になっています。先ほど作成した時間範囲がトリガとなって変換ジョブが走る模様。

Data Sourceの画面に戻り、先ほどは表示されていなかったLineageのタブを確認してみました。依存関係にあるOutputがリスト化されていました。

その他の機能

Lookup Tableは、Outputと同じように変換処理を書けるが、出力は行わずUpsolverのみで閲覧するための機能みたいです。

左メニューでMoreをクリックすると他にも機能の存在が確認できました。UsersIAMで権限管理ができる他、GitやSAMLと連携も可能みたいですね。

ご紹介は以上です!Redshiftで進めてしまったのが微妙だったので、興味ある方はSandbox環境のチュートリアルからお試しください。

所感

GUIで作成した返還処理とSQLが連動していたり、ストリームデータにあった細かい設定ができそうだったり、要所で光る特徴があるサービスでした。ただ、ぱっと見使い方や目的がよくわからないケースもあったので、使いこなすにはある程度学習も必要になってくると思います。

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