データレイク上に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
をクリックすると他にも機能の存在が確認できました。Users
やIAM
で権限管理ができる他、GitやSAMLと連携も可能みたいですね。
ご紹介は以上です!Redshiftで進めてしまったのが微妙だったので、興味ある方はSandbox環境のチュートリアルからお試しください。
所感
GUIで作成した返還処理とSQLが連動していたり、ストリームデータにあった細かい設定ができそうだったり、要所で光る特徴があるサービスでした。ただ、ぱっと見使い方や目的がよくわからないケースもあったので、使いこなすにはある程度学習も必要になってくると思います。
本アドベントカレンダーでは、今話題のデータ関連SaaSを取り上げていきますので、引き続き乞うご期待ください!