データ ファクトリのアクティビティとパイプラインを作成する
Azure Data Factory 内のアクティビティは、データに対して実行されるアクションを定義するものであり、次の 3 つのカテゴリがあります。
- データ移動アクティビティ
- データ変換アクティビティ
- 制御アクティビティ
データ移動アクティビティ
データ移動アクティビティは、単にあるデータ ストアから別のデータ ストアにデータを移動するものです。 データ移動アクティビティは、Copy アクティビティを使用するか、JSON を使用して実行できます。 ソースとして、またシンクとしてサポートされているデータ ストアは多岐にわたります。 この一覧は増え続けているため、最新の情報についてはこちらを参照してください。
データ変換アクティビティ
データ変換アクティビティは、マッピング データ フローを使用して、Azure Data Factory の作成ツール内でネイティブに実行できます。 または、コンピューティング リソースを呼び出して、変換を通じてデータを変更または拡張したり、データの分析を実行したりすることもできます。 これらには、Azure Databricks、Azure Batch、SQL Database と Azure Synapse Analytics、Machine Learning Services、Azure Virtual Machines、HDInsight などのコンピューティング テクノロジが含まれます。 カタログに格納されている既存の SQL Server Integration Services (SSIS) パッケージを使用して、Azure で実行することができます。
この一覧は常に進化しているので、最新の情報についてはこちらを参照してください。
制御アクティビティ
ADF ソリューションをグラフィカルに作成する場合、設計内の制御フローを使用して、パイプラインのアクティビティ (シーケンス内のアクティビティの連鎖、分岐、パイプライン レベルでのパラメーターの定義、オンデマンドまたはトリガーによるパイプラインの呼び出し時の引数の受け渡しなど) のオーケストレーションを行うことができます。 現在、次のような機能があります。
制御アクティビティ | 説明 |
---|---|
パイプラインの実行アクティビティ | パイプラインの実行アクティビティを使用すると、Data Factory の 1 つのパイプラインから別のパイプラインを呼び出すことができます。 |
ForEachActivity | ForEach アクティビティは、パイプライン内の繰り返し制御フローを定義します。 このアクティビティは、コレクションを反復処理するために使用され、指定されたアクティビティをループで実行します。 このアクティビティのループの実装は、プログラミング言語の Foreach ループ構造に似ています。 |
WebActivity | Web アクティビティを使用すると、Data Factory パイプラインからカスタム REST エンドポイントを呼び出すことができます。 このアクティビティで使用したり、アクセスしたりするデータセットやリンクされたサービスを渡すことができます。 |
ルックアップ アクティビティ | ルックアップ アクティビティを使用して、任意の外部ソースからレコード/テーブル名/値を読み取ったり検索したりできます。 この出力は、後続のアクティビティによってさらに参照できます。 |
メタデータの取得アクティビティ | GetMetadata アクティビティを使用すると、Azure Data Factory で任意のデータのメタデータを取得できます。 |
Until アクティビティ | プログラミング言語の Do-Until ループ構造に似た Do-Until ループを実装します。 Until アクティビティでは、そこに関連付けられている条件が true に評価されるまで、一連のアクティビティがループ実行されます。 Data Factory では、until アクティビティのタイムアウト値を指定することができます。 |
If 条件アクティビティ | If Condition は、true または false として評価される条件に基づき分岐を行うために使用できます。 If Condition アクティビティは、プログラミング言語における if ステートメントと同じ働きを持ちます。 条件が true に評価されたときの一連のアクティビティと false に評価されたときの一連のアクティビティが評価されます |
Wait アクティビティ | パイプラインで Wait アクティビティを使用すると、パイプラインは、指定した期間待った後、後続のアクティビティの実行を続行します。 |
最新の情報についてはこちらを参照してください。
アクティビティとパイプライン
アクティビティの定義
JSON 表記を使用する場合、アクティビティ セクションには 1 つ以上のアクティビティを定義できます。 アクティビティには、主に次の 2 種類があります:実行アクティビティと制御アクティビティ。 実行 (コンピューティングとも呼ばれます) アクティビティには、データ移動やデータ変換のアクティビティが含まれます。 これらのアクティビティには、次のような最上位構造があります。
{
"name": "Execution Activity Name",
"description": "description",
"type": "<ActivityType>",
"typeProperties":
{
},
"linkedServiceName": "MyLinkedService",
"policy":
{
},
"dependsOn":
{
}
}
次の表では、上記の JSON のプロパティについて説明します。
プロパティ | Description | 必須 |
---|---|---|
name | アクティビティの名前。 | はい |
description | アクティビティの用途を説明するテキスト。 | いいえ |
type | アクティビティの種類を定義します。 | はい |
linkedServiceName | アクティビティで使用される、リンクされたサービスの名前。 | HDInsight、Machine Learning バッチ スコアリング アクティビティ、ストアド プロシージャ アクティビティの場合は "はい"。 |
typeProperties | typeProperties セクションのプロパティは、アクティビティの種類に応じて異なります。 | いいえ |
policy | アクティビティの実行時の動作に影響するポリシーです。 このプロパティには、タイムアウトと再試行の動作が含まれます。 | いいえ |
dependsOn | このプロパティを使用して、アクティビティの依存関係と、後続のアクティビティが前のアクティビティにどのように依存するかを定義します。 | いいえ |
制御アクティビティの定義
Data Factory の制御アクティビティは、JSON 形式で次のように定義されています。
{
"name": "Control Activity Name",
"description": "description",
"type": "<ActivityType>",
"typeProperties":
{
},
"dependsOn":
{
}
}
次の表では、上記の JSON のプロパティについて説明します。
プロパティ | Description | 必須 |
---|---|---|
name | アクティビティの名前。 | はい |
description | アクティビティの用途を説明するテキスト。 | はい |
type | アクティビティの種類を定義します。 | はい |
typeProperties | typeProperties セクションのプロパティは、アクティビティの種類に応じて異なります。 | いいえ |
dependsOn | このプロパティを使用して、アクティビティの依存関係と、後続のアクティビティが前のアクティビティにどのように依存するかを定義します。 | いいえ |
パイプラインの定義
パイプラインを JSON 形式で定義する方法を示します。
{
"name": "PipelineName",
"properties":
{
"description": "pipeline description",
"activities":
[
],
"parameters": {
}
}
}
次の表では、上記の JSON のプロパティについて説明します。
プロパティ | Description | 必須 |
---|---|---|
name | パイプラインの名前。 | はい |
description | パイプラインの用途を説明するテキスト。 | いいえ |
activities | activities セクションでは、1 つまたは複数のアクティビティを定義できます。 | はい |
parameters | parameters セクションでは、パイプライン内に 1 つ以上のパラメーターを定義できるので、パイプラインの再利用に柔軟性を持たせることができます。 | いいえ |
例
次の JSON には、"MyFirstPipeline" という名前のパイプラインが定義されています。これには、"StorageLinkedService" という名前のリンク サービスに格納されている "partitionweblogs.hql" というスクリプト名からクエリを呼び出し、"AzureBlobInput" という名前の入力と "AzureBlobOutput" という名前の出力を持つ HDInsightHive という 1 つのアクティビティの種類が含まれています。 これは、"HDInsightOnDemandLinkedService" という名前のリンク サービスに定義されたコンピューティング リソースに対して実行されます。
パイプラインは毎月実行されるようにスケジュールされており、失敗した場合は 3 回試行されます。
{
"name": "MyFirstPipeline",
"properties": {
"description": "My first Azure Data Factory pipeline",
"activities": [
{
"type": "HDInsightHive",
"typeProperties": {
"scriptPath": "adfgetstarted/script/partitionweblogs.hql",
"scriptLinkedService": "StorageLinkedService",
"defines": {
"inputtable": "wasb://adfgetstarted@ctostorageaccount.blob.core.windows.net/inputdata",
"partitionedtable": "wasb://adfgetstarted@ctostorageaccount.blob.core.windows.net/partitioneddata"
}
},
"inputs": [
{
"name": "AzureBlobInput"
}
],
"outputs": [
{
"name": "AzureBlobOutput"
}
],
"policy": {
"concurrency": 1,
"retry": 3
},
"scheduler": {
"frequency": "Month",
"interval": 1
},
"name": "RunSampleHiveActivity",
"linkedServiceName": "HDInsightOnDemandLinkedService"
}
],
"start": "2017-04-01T00:00:00Z",
"end": "2017-04-02T00:00:00Z",
"isPaused": false,
"hubName": "ctogetstarteddf_hub",
"pipelineMode": "Scheduled"
}
}