我正在提高我的 Azure 数据工厂能力,比较复制活动性能与映射数据流写入 Azure Blob 存储中的单个 CSV 文件。
当我通过数据集 (azureBlobSingleCSVFileNameDataset) 通过 Azure Blob 存储链接服务 (azureBlobLinkedService) 写入单个 CSV 时,使用复制活动在我期望的 blob 存储容器中获取输出。例如,文件夹/output/csv/singleFiles 下的容器MyContainer 中的MyData.csv 的输出文件。
当我通过相同的 Blob 存储链接服务但通过不同的数据集 (azureBlobSingleCSVNoFileNameDataset) 写入单个 CSV 时,使用映射数据流,我得到以下信息:
我不明白为什么在使用映射数据流时会生成零长度文件。
这是我的源文件:
链接服务/azureBlobLinkedService
{
"name": "azureBlobLinkedService",
"type": "Microsoft.DataFactory/factories/linkedservices",
"properties": {
"type": "AzureBlobStorage",
"parameters": {
"azureBlobConnectionStringSecretName": {
"type": "string"
}
},
"annotations": [],
"typeProperties": {
"connectionString": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "AzureKeyVaultLinkedService",
"type": "LinkedServiceReference"
},
"secretName": "@{linkedService().azureBlobConnectionStringSecretName}"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
数据集/azureBlobSingleCSVFileNameDataset
{
"name": "azureBlobSingleCSVFileNameDataset",
"properties": {
"linkedServiceName": …Run Code Online (Sandbox Code Playgroud) 通过数据工厂映射数据流引用时,我无法使用参数化数据集。
我正在尝试编写一个通用 ELT 管道,该管道将从 blob 存储中的 CSV 文件读取并将其写入 Azure SQL 数据库中的表。
使用复制活动时,一切正常(请参阅管道“使用复制活动将 CSV 文件导入通用 SQL 表”)。
从 blob 存储中读取 CSV 文件(作为参数传递到数据工厂管道中的文件名)。CSV 文件的结构是使用获取元数据活动确定的。
CSV 文件的结构被传递给 SQL Server 存储过程,该存储过程定位与 CSV 文件具有相同结构的视图。如果不存在具有相同结构的视图,则会创建表和视图。在任何一种情况下,模式名称和视图名称都会传递回管道。然后读取 CSV 文件的内容并将其写入 SQL Server 视图。
这很有效,但我没有机会向每个写入的行添加元数据。所以我创建了一个映射数据流,它将使用派生列转换添加元数据(数据工厂名称、数据工厂管道名称、数据工厂管道运行 ID)。
当我尝试调试数据流时,出现错误"An error occurred, please view notification for more details." 我无法找到任何提供有关错误信息的通知。
当我使用带有硬编码文件名的数据集时,数据流有效。当我切换到参数化数据流(传入参数,如 pipeline().DataFactory 等)时,就会出现错误。
我已经尝试对映射数据流参数值进行硬编码,但仍然没有乐趣。
模板通过了验证,但如果我尝试通过触发管道来运行管道“使用数据流将 CSV 文件导入通用 SQL 表”,它会很快失败并给我一条神秘的错误消息:
ErrorCode=InvalidTemplate, ErrorMessage=Unable to parse expression 'body('Copy Generic CSV Source to Generic SQL SinkComposeRuntimeVariables')?.Copy Generic CSV Source to Generic SQL Sinkd7ea532482e64afc88501b46924214b3?.ReadFromSourceCSVFileInBlobStorage.FileName'
Run Code Online (Sandbox Code Playgroud)
有任何 Azure 数据工厂专家愿意伸出援手吗?
所有源代码均可在 …