>环境
- Azure 数据工厂
场景
-
我有 ADF 管道,它从本地服务器读取数据并将数据写入 azure 数据湖。
-
对于相同 - 我在 ADF*(数据集(*中提供了文件夹结构,如下所示
文件夹路径 : - DBName/RawTables/Transactional
文件路径 : - 表名.csv
问题
是否可以参数化文件夹名称或文件路径? 基本上 - 如果明天 - 我想更改文件夹路径*(没有部署(*,那么我们应该更新元数据或表结构。
所以这里的简短回答是否定的。使用 ADF 本身将无法实现此级别的动态灵活性。
需要将新的定义数据集添加到管道,作为文件夹更改的输入。在 Data Lake 中,您可能可以使用单个存储过程来接受可以重用的文件路径参数。但这仍然需要在调用过程时对 ADF JSON 进行调整。
当然,这里的包罗万象的情况是使用 ADF 自定义活动并编写一个 C# 类,其中包含执行所需操作的方法。也许是矫枉过正,并且需要花费大量精力来设置对数据湖存储的身份验证。
希望这能给你一个方向。
Mangesh,你为什么不试试ADF中的.Net自定义活动。此自定义活动将是您的第一个活动,可能会检查已处理的文件夹,如果已处理的文件夹存在,则会将其移动到历史记录(例如(文件夹。由于 ADF 是用于数据移动和数据转换的平台,因此它不处理 IO 活动。可以在以下位置了解有关 .Net 自定义活动的详细信息:
https://learn.microsoft.com/en-us/azure/data-factory/data-factory-use-custom-activities
Azure 数据工厂 V2 中的新查找活动执行所需的操作。 文档位于此处:查找活动。
JSON 示例如下所示:
{
"name": "LookupPipelineDemo",
"properties": {
"activities": [
{
"name": "LookupActivity",
"type": "Lookup",
"typeProperties": {
"dataset": {
"referenceName": "LookupDataset",
"type": "DatasetReference"
}
}
},
{
"name": "CopyActivity",
"type": "Copy",
"typeProperties": {
"source": {
"type": "SqlSource",
"sqlReaderQuery": "select * from @{activity('LookupActivity').output.tableName}"
},
"sink": {
"type": "BlobSink"
}
},
"dependsOn": [
{
"activity": "LookupActivity",
"dependencyConditions": [ "Succeeded" ]
}
],
"inputs": [
{
"referenceName": "SourceDataset",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "SinkDataset",
"type": "DatasetReference"
}
]
}
]
}
}