PR

v2登場も基本機能と性能は同じ

 2017年9月に開催されたMicrosoftの技術イベント「Ignite」で、Data Factory v2が発表され、プレビューが始まった。これにより、従来のData Factoryは「v1」という扱いになった。

 v2によってSSIS(SQL Server Integration Services)パッケージの実行などいくつか新機能が加わったほか、料金体系が変更になったが、基本機能とパフォーマンスはほぼ変わらない。

 v1とv2の料金体系について説明しよう。

 v1ではアクティビティ数による月額課金と、処理中のデータ移動時間による時間課金、リトライ回数による課金が発生する。

 それぞれの料金テーブルはアクティビティの頻度やデータの場所(クラウドかオンプレミスか)によって異なる。

 課金額の具体例を挙げる。1個のアクティビティによってAzure内のデータコピーを毎日複数回にわたり合計2時間ずつ利用した場合、1カ月のコストは次の算出式になる。

1アクティビティ×1ドル(アクティビティ/月、クラウド高頻度アクティビティ)+60時間(30日×2時間)×0.25ドル/時間(クラウド間の移動)=16ドル(税別)

 この価格であれば、Azure仮想マシンで、市販のETLソフトを動作させるより割安だろう。

 v2では、v1におけるアクティビティ数がアクティビティの実行回数に変わったほか、リトライ回数による課金がなくなった。

ウィザードでETLフローを定義

 Data Factoryは、GAになってから2年以上が経過していることもあり、操作性は成熟している。

 Azureポータルによって基本的なセットアップが可能なうえに、ETLフローを定義するためのウィザード機能も提供している(2017年9月時点でプレビュー)。さらに、アクティビティの管理画面についても不満の声は聞かない。

 これらの機能を使って、ETLフローの定義とアクティビティ管理の流れを見ていこう。

 なおETLフローの定義では、ウィザード機能を使わずに、JSON形式の定義ファイルを作成してもよい。

 まずAzureポータルのData Factoryのトップ画面で、リソースグループやリージョンを選択する(画面1)。

画面1 Data Factoryのトップ画面
画面1 Data Factoryのトップ画面
[画像のクリックで拡大表示]

 この画面で表示されるリージョンは、2017年9月時点で、欧州北部、米国中西部、米国東部、米国西部に限られる。国内のリージョンが無いことに戸惑うかもしれないが、Data Factoryのメタデータの配置先にすぎないので、海外のリージョンを選んでもパフォーマンスには関係しない。

 データの移動・コピーを行うData Factoryエージェントは、出力先のデータセットが存在するリージョンで起動する。出力先が東日本リージョンあるいは西日本リージョンの場合、どちらも東日本リージョンでエージェントが動作する。

 次に、Data Factoryの画面から「作成およびデプロイ」を開き、リンクされたサービス、データセット、アクティビティ/パイプラインというETLフローの構成要素を定義していく。

 まずは、リンクされたサービスだ。

 Blob Storageに接続する場合は、「新しいデータストア」から「Azure Storage」を選択し、必要なパラメーターを入力し「デプロイ」する。

 Blob Storageではストレージアカウント名と接続文字列を入力する。デプロイ時に構文チェックが走り、hubNameはプラットフォーム側で割り振られる。

 続いて「新しいデータセット」から「Azure Blob Storageストレージ」を選択し、パラメーターを入力する。それぞれのパラメーターの意味が表示されるため、大抵はスムーズに入力できるだろう。LinkedServiceNameには、リンクされたサービスの名前を入力する。

 ここまでの操作によって、リンクされたサービスが定義される。参考までに、画面2にJSON形式で出力した定義ファイルを示す。

画面2 リンクされたサービスを定義したJSONファイルの内容
画面2 リンクされたサービスを定義したJSONファイルの内容
[画像のクリックで拡大表示]

 データセットの定義で注意すべきはavailabilityという項目だ。データをどれだけの時間単位で分割するのかを設定する。5分単位、1日単位といった具合だ。

 ここまでの操作を繰り返して、入力元のデータセットと出力先のデータセットを用意する。

 そのうえで最後に、アクティビティ/パイプラインを定義する。「項目表示」に隠れている「新しいパイプライン」を選択し、パラメーターを入力する。その際、データセットを指定するのはもちろんとして、データセット同士のデータ構造の対照関係、処理の並列化、リトライポリシー、対象期間といった項目を定義する。