web-dev-qa-db-ja.com

Azure Data Factoryをフォルダ内のファイルをループさせる方法

私は以下のリンクを見ています。

https://azure.microsoft.com/en-us/updates/data-factory-supports-wildcard-file-filter-forcopy-activity/

フォルダパスとファイル名にワイルドカード文字を使用する機能を持つことになっています。 「アクティビティ」をクリックして[ソース]をクリックすると、このビューが表示されます。

私は何日も何日もループしたいので、このビューのようなものであるべきです。

enter image description here

もちろんそれは実際には働きません。 ErrorCode: 'PathNotfound'を読み込んでいます。メッセージ:「指定されたパスは存在しません。」ファイルパスとファイル名に特定の文字列の特定の文字列を指定して、すべてのフォルダ内のすべてのファイルを再帰的に反復するようにツールを手に入れる方法がありますか?ありがとう。

4
ASH

何日も月をループしたいと思います

  • これを行うには、パイプラインから2つのパラメータをアクティビティに渡すことで、パスをそれらのパラメータに基づいて動的に構築できるようにします。 ADF V2ではパラメータを渡すことができます。

プロセスを1つずつ開始しましょう。

1.パイプラインを作成し、毎月と日に2つのパラメータを渡します。

:このパラメータは必要に応じて他のアクティビティの出力から渡すことができます。参照: ADFのパラメータ
Passing Params to the copy activity through pipeline
[。] 2. 2つのデータセットを作成します。

[。] 2.1シンクデータセット - BLOBストレージ)をリンクしています。リンクされているサービス(既存のものであることを確認してください)。必要に応じてパラメータとして渡すことができます。 enter image description here

[。] 2.2 Source DataSet - BLOBストレージには、または必要に応じて依存します。リンクされているサービスにリンクして、コンテナ名(存在することを確認してください)。必要に応じてパラメータとして渡されました。 enter image description here
[。] 注:1。フォルダパスは、データをコピーするパスを決定します。コンテナが存在しない場合は、アクティビティが作成され、ファイルが既に存在する場合はデフォルトでファイルが上書きされます。 。

2。出力パスを動的に構築する場合は、データセット内のパラメータを渡します。ここでは、MonthcopyとDatacopyというDataSetの2つのパラメータを作成しました。

[。] .パイプラインでコピーアクティビティを作成します。

[。] ワイルドカードフォルダパス:

    @{concat(formatDateTime(adddays(utcnow(),-1),'yyyy'),'/',string(pipeline().parameters.month),'/',string(pipeline().parameters.day),'/*')}

where:
    The path will become as: current-yyyy/month-passed/day-passed/* (the * will take any folder on one level)
 _

enter image description here - enter image description here

テスト結果:

enter image description here

パイプラインのJSONテンプレート:

{
    "name": "pipeline2",
    "properties": {
        "activities": [
            {
                "name": "Copy Data1",
                "type": "Copy",
                "dependsOn": [],
                "policy": {
                    "timeout": "7.00:00:00",
                    "retry": 0,
                    "retryIntervalInSeconds": 30,
                    "secureOutput": false,
                    "secureInput": false
                },
                "userProperties": [],
                "typeProperties": {
                    "source": {
                        "type": "DelimitedTextSource",
                        "storeSettings": {
                            "type": "AzureBlobStorageReadSettings",
                            "recursive": true,
                            "wildcardFolderPath": {
                                "value": "@{concat(formatDateTime(adddays(utcnow(),-1),'yyyy'),'/',string(pipeline().parameters.month),'/',string(pipeline().parameters.day),'/*')}",
                                "type": "Expression"
                            },
                            "wildcardFileName": "*.csv",
                            "enablePartitionDiscovery": false
                        },
                        "formatSettings": {
                            "type": "DelimitedTextReadSettings"
                        }
                    },
                    "sink": {
                        "type": "DelimitedTextSink",
                        "storeSettings": {
                            "type": "AzureBlobStorageWriteSettings"
                        },
                        "formatSettings": {
                            "type": "DelimitedTextWriteSettings",
                            "quoteAllText": true,
                            "fileExtension": ".csv"
                        }
                    },
                    "enableStaging": false
                },
                "inputs": [
                    {
                        "referenceName": "DelimitedText1",
                        "type": "DatasetReference"
                    }
                ],
                "outputs": [
                    {
                        "referenceName": "DelimitedText2",
                        "type": "DatasetReference",
                        "parameters": {
                            "monthcopy": {
                                "value": "@pipeline().parameters.month",
                                "type": "Expression"
                            },
                            "datacopy": {
                                "value": "@pipeline().parameters.day",
                                "type": "Expression"
                            }
                        }
                    }
                ]
            }
        ],
        "parameters": {
            "month": {
                "type": "string"
            },
            "day": {
                "type": "string"
            }
        },
        "annotations": []
    }
}
 _

シンクデータセットのJSONテンプレート:

{
    "name": "DelimitedText1",
    "properties": {
        "linkedServiceName": {
            "referenceName": "AzureBlobStorage1",
            "type": "LinkedServiceReference"
        },
        "annotations": [],
        "type": "DelimitedText",
        "typeProperties": {
            "location": {
                "type": "AzureBlobStorageLocation",
                "container": "corpdata"
            },
            "columnDelimiter": ",",
            "escapeChar": "\\",
            "quoteChar": "\""
        },
        "schema": []
    }
}
 _

ソースデータセットのJSONテンプレート:

{
    "name": "DelimitedText2",
    "properties": {
        "linkedServiceName": {
            "referenceName": "AzureBlobStorage1",
            "type": "LinkedServiceReference"
        },
        "parameters": {
            "monthcopy": {
                "type": "string"
            },
            "datacopy": {
                "type": "string"
            }
        },
        "annotations": [],
        "type": "DelimitedText",
        "typeProperties": {
            "location": {
                "type": "AzureBlobStorageLocation",
                "folderPath": {
                    "value": "@concat(formatDateTime(adddays(utcnow(),-1),'yyyy'),dataset().monthcopy,'/',dataset().datacopy)",
                    "type": "Expression"
                },
                "container": "copycorpdata"
            },
            "columnDelimiter": ",",
            "escapeChar": "\\",
            "quoteChar": "\""
        },
        "schema": []
    }
}
 _
3
Anish K