今回はELTサービスの「Azure Data Factory(Data Factory)」を取り上げる。一般的なETLと同様に、様々なデータソースからのコピー・移動やフォーマット変換、加工などの処理をジョブとして定義し、スケジュールに沿って実行する機能を備える。データ処理量に対する従量課金がベースのPaaSとして提供されており、サーバーやミドルウエアの構築や維持管理といった運用の手間がかからない。処理性能の増大・縮小も、Azureポータルで行える。

 特徴として、Azure内のリソースだけでなく、Azure外のデータソースとも連携できる点が挙げられる。オンプレミス環境のデータや、Azure以外のクラウドに存在するデータを取り扱うことができるので、用途はAzureに閉じたシステムに限らない。オンプレミス環境とAzureをつなげたハイブリッド環境や、他のクラウドを含むマルチクラウド環境でも活用できる。

 Data FactoryはGA(一般提供)から丸2年が経過し、成熟しつつあるサービスである。米Microsoft自身もXbox 360のデータ分析に用いるなど、大規模環境での実績がある。

 機能強化も継続的に行われており、後発でリリースされたパイプラインの作成ウィザードや管理用ポータルといった一部機能は2017年9月時点でプレビューとなっている。

ETLフローの四つの構成要素

 Data FactoryによるETLフローの構成要素を説明しよう。重要なのは「リンクされたサービス(Linked services)」「データセット(Datasets)」「アクティビティ/パイプライン(Pipelines)」の三つだ(図1)。

図1 Data FactoryによるETLフローの構成要素
図1 Data FactoryによるETLフローの構成要素
[画像のクリックで拡大表示]

 リンクされたサービスは基本的に、ETL処理の対象とするデータストアーを指す。データの入力元になるソースと出力先になるターゲットの両方を含む。

 Azureでは、SQL Database、SQL Data Warehouse、Cosmos DB、Blob Storage、Table Storageをサポートする。データベースソフトではSQL Server、MySQL、PostgreSQL、Oracle、MongoDBも利用可能だ。オンプレミス環境、Azure、他クラウドと稼働環境を問わない。

 そのほか、AWSのオブジェクトストレージAmazon S3、データウエアハウスAmazon Redshift、 HTTP/FTPが使えるファイルサーバーなど多様なデータストアーに対応する。

 データセットは、上述したデータストアー内の対象データを指す。データベースではテーブル、Azure Blob Storageではフォルダーパスといった具合に、データを取得するための情報をデータセットとして指定する。これも、リンクされたサービスと同じく、データの入力元になるソースと出力先になるターゲットの両方を含む。

 ETLでは、抽出・変換・ロードといった処理を行う。それぞれの処理がアクティビティだ。一連のアクティビティを束ねたものをパイプラインと呼ぶ。

 データストアーがファイアウォールの内側にある場合は、「Data Management Gateway」という無償のソフトウエアを使ってゲートウェイサーバーを設ける必要がある。Data Management Gatewayはオンプレミス環境のデータを集約してData Factoryに送信する。Data Factoryで処理したデータをオンプレミス環境のデータストアーに書き込むことも可能だ。

 Data Management GatewayとData Factoryの間の通信は暗号化される。

 リンクされたサービス、データセット、アクティビティ/パイプラインはいずれもJSON形式で定義する。ツールとしては、AzureポータルあるいはVisual Studioを利用できる。この記事では、Azureポータルを使うものとする。