MS大田さんによる「データ加工の期待の新ツール!Azure Data Factory」セッションを受講したので、受講メモをつらつらと書いておく。
大田さんの自己紹介。もともとは大量のトラフィック分析(攻撃トラフィックか、IP偽装分析)などをしていました。理論が好きなのと、今回の話は概念から入ると理解しやすいので、概念から説明します。
今日は、Azure Data Factoryの日本初のセッションとなります!今後重要なキーサービスとなるので、丁寧に解説したいと思います。何か、使いどころはどこか、使い方についての順番に説明していきます。

Azure Data Factoryとは
Azure Data Factoryは、調整/自動化サービスです。SQL Server、MySQL、など様々なデータソースからデータを取得し、データをクレイジングして、適切なデータストアにデータを格納するまでの一連の流れを自動的に調整してくれるサービスとなります。人手を介さないワークフローとイメージしていただくといいかも。
例えば、次のような例を考えてみましょう。
- アクセスログをストレージから取得
- HDInsightでデータをフォルダ分けしてストレージに保存
- 返還後、別のデータと結合する
- 結果を、SQL Databaseに格納する
上記のような一連の作業を、調整し自動実行するのがAzure Data Factoryの役割です
管理ポータルで実際の画面を見てみましょう。作成、ダイアグラム、サンプルとあります。

ダイアグラムは、どのような処理をしているのかをグラフィカルに表示されて、理解しやすくしています。

サンプルを用意しており、ひとまず動作を簡単に理解したい場合には、サンプルパイプラインを使用すると簡単に試すことができます。

Azure Data Factoryの概念
Data Factoryの概念を知りましょう。登場人物は4つです。Data Set、Activity、Pipline、Linked Serviceの4つです。

Linked Serviceは、データストアとかコンピューティングサービスなどのリソースへの接続情報を保持しています。データストア、データ処理など、あらゆるリソースへの接続情報を保持します。

現在使用できるデータストアは、現在以下のものが提供されています。

オンデマンドHDInsightは、Azure Data Factoryによって管理されるサービスです。Bring Your Ownのほうは、Azureポータルで自分で作成して用意しておくサービスのほうです。
Azure Data Factoryが管理するHDInsightは必要なタイミングでHDInsightを起動し、不要になったら削除してくれるので課金的には優しいサービス(停止忘れ防止になる)です。これは、自動的に管理されるものなので、管理ポータルから確認することはできません。
ただし、削除タイミングは指定できて、処理完了後何分後にHDInsightを削除できるかを指定できます。0分にするとすぐ削除されます。これを指定するのに必要な理由は、HDInsightで処理して、データを格納して、またHDInsightで処理するというようなパイプラインの場合、一回一回でシャットダウンすると再度15分かけてプロビジョニングをすることになるので、無駄をなくすには他所の猶予を設けるといいです。
Data Setは、Linked Serviceが参照するデータストアに格納されている入力/出力データを表します。これは、フォルダ名の指定やテーブル名の指定です。これを設定して初めて、実データを指定することになります。

Activityは、データに対して実行するアクションを定義します。Data Setもコンピューティング両方を扱うことができます。データのコピーや、データの変換分析を処理さえることができます。1つのActivityに複数の処理を書いてしまうと煩雑になってしまうので複数のActivityに分けてあげるといいですね。
<
PipeLineは、複数のActivityを論理的にひとまとめにして管理するグループです。いくつかのActivityを束にまとめます。

Azure Data Factoryの操作に使用するツール
Azure Data Factoryは、JSONで定義します。

JSONを書くのはつらいので、補助するために3つのツールが提供されています。ブラウザーベースのものもあるので、Macユーザーでも使用することができます。
- Data Factory Editor(ブラウザーベース)
- Visual Studio(Windows)
- PowerShell(Windows)
Data Factory Editorはブラウザベースで提供されており、現時点では一番こなれたツールとなっています。初めて使用する人は、Data Factory Editorから使い始めるといいでしょう。

Visual Studioの対応状況はこのような感じ。Cloud Explorerはリソース状況が確認しやすくて素敵です。でもダイアグラムは弱めで、エラーとかでる。現時点では、まだまだ発展登場なのでおすすめはしないかも。

PowerShellはこんな感じ。新規作成などの操作性はあまりいいとは言えないかも。

Azure Data Factoryの操作手順
Data Factory Editorで、Linked Serviceを作成します。作成ボタンをクリックすると、リソースを選択することができます。

次に、Data Setを作成します。Data Setの定義では、次の図のようにインテリセンスがきいて入力しやすくなっています。

Piplineを定義します。頑張ってコーディングしなくても、あらかじめ定義が用意されているので、定義をするだけでいいです。例えば、日次で実行し、感覚をどれぐらい開けるみたいなのも定義で指定できます。

インプット元、アウトプット先も、このように簡単に定義することができます。
a
セッション資料
https://doc.co/ofv4Vw
10/5に開催されたAzure Deep Diveのセッションの一つで、MSの大田さんによる「データ加工の期待の新ツール!Azure Data Factory」で使用されたセッション資料を閲覧することができます。