Data Factory V2 新機能徹底活用入門
クラウドコンサルティング事業部
藤川 佳祐
自己紹介
◼
藤川 佳祐 (Keisuke Fujikawa)
◼
株式会社システムサポート 所属
◼
略歴
◼
フリーペーパー編集営業
◼
アプリケーションエンジニア(C#, Ruby)
◼
ソーシャルゲーム運営
◼
データベースエンジニア(Oracle)
◼
…現在はAzureを中心としたクラウドエンジニア
本日のゴール
↑のマークがついている箇所は
V2になっ
て新たに追加された機能
の説明箇所です。
Azure Data Factory V2の新機能を
覚えて帰ってください!
本日の流れ
On-Premises
DB
SQL
Database
Azure
フラットファイル テーブル情報Azure
Storage
オンプレ環境上の各データをAzure上の分析基盤に集約する
ワークフローを作成するデモを交えてV2新機能を紹介します
データ変換
テーブル情報 BlobファイルAzure Data Factoryとは?
◼
Microsoftが提供するパブリッククラウドAzure環境上で利用で
きるフルマネージドのデータ統合(ETL)サービス。
オンプレミス、クラウドと環境を問わない各種データソースか
らのデータロード、加工、出力を管理でき、データ統合を支援
するツール。
◼
2018年6月末にVersion 2がGAとなった
◼
データソースとして接続できる環境は
約70種以上
(2018年8月時点)
◼
アクティビティ失敗時の制御ができない!
◼
繰り返し処理や条件分岐等の細やかな制御ができない!
◼
スケジュール実行、即時実行しか対応していない!
◼
データ加工するためにはHDInsightかC#でカスタムするしかない!
◼
GUIが使いづらいしパイプラインのデバッグがしずらい!!!!!
V1時代の困りごと(注:筆者の個人的感想)
◼
統合ランタイム
- Integration Runtime
◼
リンクされたサービス
- LinkedService
◼
データセット
- DataSet
◼
アクティビティ
- Activity
◼
パイプライン
- Pipeline
◼
トリガー
- Trigger
◼
統合ランタイム
◼
セルフホステッド統合ランタイム
◼
Azure-SSIS統合ランタイム
セルフホステッド統合ランタイム
On-Premises
DB
フラットファイル テーブル情報◼
オンプレ環境上のデータに接続する統合ランタイム
◼
Windows環境上で起動するサービス。V1で言うところの「Data Management Gateway」
◼
複数ノードを関連付けてスケールアウトすることが可能
Srv
Azure
Azure
Storage
テーブル情報 BlobファイルSQL
Database
Azure-SSIS統合ランタイム
On-Premises
DB
フラットファイル
テーブル情報
◼
SQL Server Integration Services(以後SSIS)パッケージ実行専用ランタイム
◼
SSIS パッケージ実行専用のAzure VM
◼
スケールアップ、スケールアウトが可能
Srv
Azure
Azure
Storage
テーブル情報 BlobファイルSQL
Database
Azure統合ランタイム
On-Premises
DB
フラットファイル テーブル情報◼
Azure環境上のデータに接続する統合ランタイム
◼
Azure 内で完全に管理されたサーバーレス コンピューティングであり、
自動スケールがサポートされている
Srv
Azure
Azure
Storage
テーブル情報 BlobファイルSQL
Database
リンクされたサービス(LinkedService)
On-Premises
DB
フラットファイル テーブル情報◼
各データソースへの接続情報
Srv
Azure
Azure
Storage
テーブル情報 BlobファイルSQL
Database
データセット(DataSet)
On-Premises
DB
フラットファイル テーブル情報◼
データストア(入力、出力データ)のデータ構造に関する情報
Srv
Azure
Azure
Storage
テーブル情報 BlobファイルSQL
Database
アクティビティ(Activity)
◼
データに対して実行するアクションの定義
✓データ移動アクティビティ
✓ オンプレミスにあるデータ ストアやクラウド内のデータ ストアの間でデータ
コピーを実施
✓データ変換アクティビティ
✓ Azure HDInsight クラスターや Azure Batchなどのコンピューティング環境を
利用してデータセットの変換および処理を実施
✓ オンデマンドの Azure HDInsight Spark クラスターの作成がサポートされた
✓ SSISを利用したデータ変換、処理が可能となった
✓制御アクティビティ
制御アクティビティ
繰り返し処理
条件分岐
メタデータ、データ取得
Web
パイプライン実行
待機処理
入力データセットの各種メ
タ情報、データ内容を読み
取り後続に引き渡す
ForEach, do-until構文の
ようにパイプライン内の
繰り返し制御を定義可能
指定条件の評価
(true/false)を判定し後続
アクティビティを実行
パイプラインから別のパイ
プラインの呼び出しが可能
カスタムREST エンドポイ
ントを呼びだし、他サービ
指定した期間待った後、後
続のアクティビティの実行
アクティビティ例①データコピー
On-Premises
DB
フラットファイル テーブル情報◼
オンプレ環境上の各データをAzureBlobStorageに転送
◼
セルフホステッドIRを中継してオンプレ環境上のファイルシステムに格納されたフラットファ
イル、DBのテーブルに格納されたデータをAzureBlobStorageに転送する
Srv
Azure
Azure
Storage
テーブル情報 BlobファイルSQL
Database
アクティビティ例②データ変換
On-Premises
DB
フラットファイル テーブル情報◼
BlobStorageに転送されたデータを変換・加工
◼
Azure-SSIS統合ランタイムにあらかじめデプロイ済みのSSISパッケージを実行し、
指定のファイルをデータ変換・加工
Srv
Azure
Azure
Storage
テーブル情報 BlobファイルSQL
Database
アクティビティ例③データコピー
(EventTrigger利用)
On-Premises
DB
フラットファイル テーブル情報◼
AzureBlobStorage上のデータをSQL Databaseに転送
◼
Azure統合ランタイムを介して、データ加工済みの各ファイルを
SQL Databaseの指定テーブルにインポート
※EventTriggerを利用し、Blobファイル追加時にパイプラインが起動するよう設定
Srv
Azure
Azure
Storage
テーブル情報 BlobファイルSQL
Database
指定コンテナにBlobが
追加されたことを検知
アクティビティ例④制御
(WEBアクティビティによるメール送信)
On-Premises
DB
フラットファイル テーブル情報◼
データコピーに失敗した場合、エラー情報をメール通知
◼
WEBアクティビティよりメール送信APIを利用してエラー情報をメール送信する
Srv
Azure
Azure
Storage
テーブル情報 Blobファイルデータコピー失敗
SQL
Database
パイプライン(Pipeline)
On-Premises
DB
フラットファイル テーブル情報◼
複数のタスクを連携して実行するアクティビティの論理的グループ
◼
今回のデモでは2種類のパイプラインを作成
1.
オンプレ環境の各種データをAzureBlobストレージにコピーしデータ加工
2.
加工済ファイルをSQLDatabaseに格納する(失敗時はメール通知)
Srv
Azure
Azure
Storage
Blobファイルパイプライン(Pipeline)
On-Premises
D
◼
複数のタスクを連携して実行するアクティビティの論理的グループ
◼
今回のデモでは2種類のパイプラインを作成
1.
オンプレ環境の各種データをAzureBlobストレージにコピーしデータ加工
2.
加工済ファイルをSQLDatabaseに格納する(失敗時はメール通知)
Azure
Azure
Storage
テーブル情報 Blobファイルデータコピー失敗
SQL
Database
DB
フラットファイル テーブル情報Srv
✓スケジュール
✓ 実時間のスケジュールによってパイプラインを起動するトリガー
✓ 定期的、および特定の日時・曜日(例:月曜日午後 5 時と木曜日午後 9 時)
にパイプラインを実行したい際に使用
✓タンブリング ウィンドウ
✓ 状態を保持しながら定期的に実行されるトリガー
✓ 一定間隔(例:15分間隔)でパイプラインを実行したい際に使用
✓イベントベース
✓ イベントに応答するトリガー
✓ Azure Blob Storage上へのファイル追加/削除イベントに応答してパイプ
トリガー
◼
統合ランタイム
- Integration Runtime
◼
リンクされたサービス
- LinkedService
◼
データセット
- DataSet
◼
アクティビティ
- Activity
◼
パイプライン
- Pipeline
◼
トリガー
- Trigger
◼
Demo
On-Premises
D
Azure
Azure
Storage
テーブル情報 Blobファイルデータコピー失敗
SQL
Database
DB
フラットファイル テーブル情報Srv
◼
アクティビティ失敗時の制御ができない!
◼
繰り返し処理や条件分岐等の細やかな制御ができない!
◼
スケジュール実行、即時実行しか対応していない!
◼
データ加工するためにはHDInsightかC#でカスタムするしかない!
◼
GUIが使いづらいしパイプラインのデバッグがしずらい!!!!!
V1時代の困りごと(注:筆者の個人的感想)
◼
アクティビティ失敗時の制御ができない!
◼
繰り返し処理や条件分岐等細やかな制御ができない!
◼
スケジュール実行、即時実行しか対応していない!
◼
データ加工するためにはHDInsightかC#でカスタムするしかない!
◼
GUIが使いづらいしパイプラインのデバッグがしずらい!!!!!
V1→V2アップデート
アクティビティ成功/失敗/完了/スキップ時の分岐制御追加
制御フローアクティビティの追加
EventTriggerの追加
SSISパッケージ実行アクティビティの追加
アクティビティ一覧
分類 アクティビティ名 概要
Batch Service Custom 指定スクリプト(shell, exe等)をAzure Batch プール上で実行する Databricks Notebook DatabricksワークスペースでDatabricks Notebookを実行する Databricks Jar DatabricksクラスターでSpark Jarを実行する
Databricks Python DatabricksクラスターでPythonファイルを実行する Data Transformation Copy Data 入力データソースを出力先データソースにファイル転送する
Data Lake Analytics U-SQL Azure Data Lake Analytics コンピューティング リンク サービスで U-SQL スクリプトを実行する General Execute Pipeline 指定パイプラインを実行する
General Get Metadata 入力データセットのメタデータを取得する
General Lookup 入力データソースの構成ファイルやテーブルの内容を読み取る General Execute SSIS Package SSISパッケージを実行する
General Stored Procedure 指定DBのストアドプロシージャを実行する
General Web カスタム REST エンドポイントを呼び出す(GET, POST, PUT, DELETEが実行可能) General Wait 指定時間待機する
HDInsight Hive HDInsightクラスターでHiveクエリを実行する
HDInsight MapReduce HDInsightクラスターでMapReduceプログラムを実行する HDInsight Pig HDInsightクラスターでPigクエリを実行する
HDInsight Spark HDInsightクラスターでSparkプログラムを実行する
HDInsight Streaming HDInsightクラスターでHadoop Streaming プログラムを実行する Iteration & Conditionals Filter 入力データセットに対してフィルター処理を行う
Iteration & Conditionals ForEach 入力データセットに対して繰り返し処理(forループ)を行う Iteration & Conditionals If Condition 入力データセットに対して条件分岐処理を行う
各種制限
Resource 既定の制限 上限
Azure サブスクリプション内の Data Factory 50 サポート問合せ データ ファクトリ内のエンティティ (パイプライン、データセット、トリガー、リンクされたサービス、統合ランタイム) の合計数 5,000 サポート問合せ 1 つのサブスクリプションでの Azure-SSIS Integration Runtime の CPU コアの合計 128 サポート問合せ パイプラインあたりの同時実行パイプラインの実行数 100 サポート問合せ データ ファクトリあたりの同時実行パイプラインの実行数 10,000 サポート問合せ パイプラインあたりの最大アクティビティ数 (コンテナーの内部アクティビティを含む) 40 40 パイプラインあたりの最大パラメーター数 50 50 ForEach 項目数 100,000 100,000 ForEach 並列処理 20 50 式ごとの文字数 8,192 8,192 最小タンブリング ウィンドウ トリガー間隔 15 分 15 分 パイプラインのアクティビティ実行の最大タイムアウト 7 日 7 日 パイプライン オブジェクトのオブジェクトあたりのバイト数1 200 KB 200 KB データセットとリンクされたサービス オブジェクトのオブジェクトあたりのバイト数1 100 KB 2,000 KB コピー アクティビティの実行 1 回あたりのデータ統合単位 3 256 サポート問合せ
接続可能データソース一覧(2018年8月時点)
Azure DB NoSQL ファイル 汎用プロトコル サービスとアプリ
Azure Blob Storage Amazon Redshift Cassandra Amazon S3 汎用 HTTP Amazon Marketplace Web Service (プレビュー) Azure Cosmos DB DB2 Couchbase (プレビュー) ファイル システム 汎用 OData Common Data Service for Apps
Azure Data Lake Storage Gen1 Drill (プレビュー) MongoDB FTP 汎用 ODBC Concur (プレビュー) Azure Data Lake Storage Gen2 (プレビュー) Google BigQuery HDFS Dynamics 365 Azure Database for MySQL Greenplum SFTP Dynamics CRM Azure Database for PostgreSQL HBase GE Historian
Azure File Storage Hive HubSpot (プレビュー) Azure SQL Database Apache Impala (プレビュー) Jira (プレビュー) Azure SQL Data Warehouse Informix Magento (プレビュー) Azure Search インデックス MariaDB Marketo (プレビュー) Azure Table Storage Microsoft Access Oracle Eloqua (プレビュー)
MySQL Oracle Responsys (プレビュー) Netezza Paypal (プレビュー)
Oracle QuickBooks (プレビュー) Phoenix Salesforce
PostgreSQL Salesforce Service Cloud
Presto (プレビュー) Salesforce Marketing Cloud (プレビュー) SAP Business Warehouse SAP Cloud for Customer (C4C)
SAP HANA SAP ECC Spark ServiceNow SQL Server Shopify (プレビュー) Sybase Square (プレビュー)