在 Azure 数据工厂映射数据流中使用参数化数据集

Mar*_*nek 4 azure-data-factory azure-data-factory-2

通过数据工厂映射数据流引用时,我无法使用参数化数据集。

我正在尝试编写一个通用 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 数据工厂专家愿意伸出援手吗?

所有源代码均可在https://github.com/marc-jellinek/AzureDataFactoryDe​​mo_GenericSqlSink 获得

提前致谢!

Mar*_*nek 5

问题是数据流的名称中有空格。

问题是名称中包含空格的数据流不支持参数表达式。您能否尝试将数据流重命名为“将通用 CSV 源复制到通用 SQL SinkComposeRuntimeVariables”,然后进行预览?同时我们会在 UX 端增加更多的验证,以正确处理数据流的命名限制。

我已经从数据流的名称中删除了空格并成功测试。


小智 2

您可以使用数据流参数中的表达式将这些值从管道直接传递到数据流活动中,无需使用数据集参数。

要进行调试,请打开“调试”开关,然后在数据流设计器中,转到转换上的“数据预览”选项卡。您可以使用数据流参数中的默认值进行测试,或在调试时使用调试设置进行设置。