これまでSQLでの実装が中心だった開発者にとって、ETLツールを利用した開発は、SQLと比べて効率が悪いと言うイメージを持たれている方も多いのではないでしょうか?

SQLだと1つのSQL文の中で複数の変換を柔軟に組み込むことができるのに対して、ETLの部品はそれぞれ特定の変換だけを行う部品を組み合わせながら開発するため、SQLで実装できる開発者にとってはSQLと比較してストレスを感じてしまうのも原因の1つでしょう。

しかしながら、現在は、これまでのようにSQLを中心にパイプラインを開発するというのは必ずしも適しているとは言えなくなりつつあります。

その理由として以下のような背景があります。

  • クラウド化の進展によるデータフォーマットの多様化
  • データエンジニアのリソース不足とLow-codeプラットフォームへの注目

そこで今回はこういった背景を踏まえ、ユーザーのスキルセットに応じたETLの使い方について考えてみたいと思います。

 

ビジネスユーザーの場合

ビジネス部門でSQLを習得し使いこなせる方はそれほど多くはありません。ビジネス部門の多くは、データパイプラインの構築およびメンテナンスを外部のITベンダーに頼っていることが多いかと思います。

こうした外部のエンジニアに頼っているがために、以下のような問題を抱えている方もいらっしゃるかと思います。

  1. 新たな分析要件をタイムリーに実装できていない
  2. 人材不足により、必要なデータエンジニアをアサインできない、もしくはアサインするまでに時間がかかる
  3. コミューニケーションミスや手戻りが発生しやすい
  4. 既存データの仕様がブラックボックス化しているため、似たようなデータが、その都度場当たり的に作られている

もし、ビジネスユーザー自身がデータパイプラインを作ることができたら、上記のような問題に悩む必要はなくなります。

その解決策となるのがLow-codeプラットフォームでのETLソリューションです。

ETLを使えば、接続、変換、データベース・データウェアハウスやストレージへの保存をドラッグ&ドロップベースで簡単に作成することができます。

実は、これまでもETL製品のほとんどが、ドラッグ&ドロップの GUIを提供していましたが、その多くはエンジニア向けの製品として作られたものが多く、サーバーを用意してインストールする必要があったり、デスクトップに専用のツールをインストールしてそのツールで開発しなければならないなど、シンプルとは言い難いものがほとんどでした。

最近では、クラウド化の進展により、Integrate.ioやFivetranなどクラウドベースのETLツールが登場したことで、インターネットブラウザでパイプラインを開発できる製品もあります。

特にマーケティングオートメーション(MA)製品やCRMの多くは、クラウドでサービスが提供されているため、Rest APIで簡単にアクセスできるのも、クラウドベースのETL製品にとっては追い風となっています。

こうしたクラウドデータのフォーマットは、JSON形式のため、ETLがもつ変換機能を利用して変換する方が簡単です。ドラッグ&ドロップといくつかのよく使う関数を覚えてしまえば、ビジネスユーザーでもパイプラインを簡単に作成できます

ビジネスユーザーがETLを利用する際のポイントは、複雑なことはしようとせず、シンプルで簡単な部分にフォーカスすることです。

例えば以下のようなポイントで実装することです。

  • 簡単な変換処理(データの構造化および項目の選択と条件によるグルーピング追加とフィルター)のみ加えたパイプラインを実装する
  • スケジュールを設定する
  • ジョブが失敗した場合にアラート通知(Slackやメールなど)を受け取る

エンジニアの場合

SQLやプログラムが得意なエンジニアであれば、ETLの部品を使うよりも自身でプログラムを作成した方が早いと考える方も多いことでしょう。しかしながら、最新のETL製品で提供されているような「クラウド上の様々なアプリケーションやデータベース」に簡単にアクセスできるコネクター、ジョブのスケジューリング、ジョブの依存関係を柔軟に設定できるワークフローといった機能は非常に魅力的です。

よく議論になる「ETLを使うか、使わないか」ではなく、ETL製品の優れた部分を活かし、パイプラインを効率的に作成する方法について検討してみてはいかがでしょうか?

1. コネクター

新規データソースに対しての接続は、常にエンジニアにとっては開発が必要となるポイントです。開発する必要がなく、コネクタを利用できれば、その分早くデータを提供する仕組みを作ることができます。また、コネクター接続先のAPIの仕様変更についても、その都度後追いで対応する必要がなく、ETL製品ベンダーがコネクターをアップデートしてくれるので安心です。

2. Rest API

ETLのオペレーションを自動化してくれるRest APIを使用し、ジョブの実行やスケジューリングを行うことで、標準機能では満たせないようなジョブの自動化要件を実現することができます。

3. インシデント管理システムとの連携

PagerDutyなどのインシデント管理システムと連携することができます

4. ワークフロー機能

ワークフロー機能を使えば、各タスクに依存関係をセットして、一連の処理をオーガナイズすることができます。また、ワークフローの機能として、データ送信先のデータウェアハウスやデータベースに対して、SQLを実行できるため、データの移動部分はコネクターを利用して作成し、データ送信先にデータが移動した後にSQLで変換するといったELT処理を組むことが可能です。

最後に

データエンジニアのリソースが枯渇している現在、この課題に対して、ビジネスユーザーもしくはSQLを書くことができないエンジニアでも、ドラッグ&ドロップでパイプラインを作成することができれば、データ活用を重視する企業にとって大きな力になります。そのためには、ETLの提供する機能の特徴を生かし、ドラッグ&ドロップでできる部分(No-CodeやLow-Code)をうまく活かすることが重要です。

また、データエンジニアは、ETLを使う、使わないではなく、自身のリソースをより有効に活用するための仕組みとしてETLを検討することで、より多くのデータ要件に対応でき、データ提供までの開発期間を短縮化することができると思います。

Integrate.ioはG2 Crowdにて2020年冬のETLツールカテゴリにおいて「Leader」に選ばれています。(G2 Crowdのレビューページでは、ユーザーの声がビデオで紹介されており、変換の多様性、すぐに使えるコネクタの豊富さ、サポートのレスポンスの良さ、学習が容易といった点を評価していただいてます。)