到 Azure SQL 数据库的数据流输出仅包含 Azure 数据工厂中的 NULL 数据

Posted

技术标签:

【中文标题】到 Azure SQL 数据库的数据流输出仅包含 Azure 数据工厂中的 NULL 数据【英文标题】:Data Flow output to Azure SQL Database contains only NULL data on Azure Data Factory 【发布时间】:2021-01-15 04:22:33 【问题描述】:

我正在 Azure 数据工厂上测试数据流。我创建了具有以下详细信息的数据流: 源数据集链接服务 - 来自 Blob 存储中的 CSV 文件数据集 接收器链接服务 - 带有预创建表的 Azure SQL 数据库 我的 CSV 文件非常简单,因为它们只包含 2 列(父母、孩子)。所以,我在 SQL DB 中的表也只有 2 列。

对于我的数据流的接收器设置,我允许插入数据并将其他选项保留为默认值。

我还根据屏幕截图映射了输入和输出列的 2 列。

当我检查结果时,带有数据流的管道运行成功,我可以看到已处理 5732 行。这是正确的检查方法吗?因为这是我第一次在 Azure 数据工厂中尝试此功能。

但是,当我点击数据预览选项卡时,它们都是NULL值。

并且;当我在表中检查我的 Azure SQL DB 时,我尝试从 Blob 存储中插入来自 CSV 文件的数据,并从该表中选择前 1000 行,我没有看到任何数据。

能否告诉我我在数据流上的配置错误?非常感谢您。

这里是 ADF 数据流源数据的截图,它确实看到了右侧的数据,因为它们不是 NULL,但左侧都是 NULL。我想右侧是来自 blob 源的 CSV 数据,对吗?左侧是接收器目的地,因为桌子现在是空的?

这是接收器检查输入的屏幕截图,我认为这是正确的,因为它正确读取了 2 列(父、子),是吗?

添加地图漂移后,映射“Parent”=>“parent”和“Child”=>“child”

我在运行管道后收到此错误消息。

检查接收器数据预览时,我收到此错误消息。好像映射不正确?

我按照建议将 MapDrifted1 表达式重命名为“toString(byName('Parent1))”和 Child1。

数据流执行成功,但是在 sink SQL 表中我仍然得到 NULL 数据。

【问题讨论】:

【参考方案1】:

您可以在数据流设计图后面复制/粘贴脚本吗?转到 ADF UI,打开数据流,然后单击右上角的脚本按钮。

在您的源转换中,单击数据预览以查看数据。确保您看到的是数据,而不是 NULL。此外,查看您的接收器的 INPUT 上的 Inspect,以查看 ADF 是否正在读取其他列。

【讨论】:

您好@Mark Kromer,再次非常感谢您的帮助。这是数据流脚本: source(output( Parent as string, Child as string ), allowSchemaDrift: true, validateSchema: false, ignoreNoFilesFound: false) ~> source1 source1 sink(input( PARENT as string, CHILD as string ), allowSchemaDrift : true, validateSchema: true, deletable:false, insertable:true, updateable:false, upsertable:false, format: 'table', mapColumn( PARENT = Parent, CHILD = Child )) ~> sinkAzureSQLserver 我不知道如何在评论中添加截图,因此我在上面的问题中添加了新的截图。 看起来你的源文件列名实际上都是小写的。请注意,在您的新屏幕截图中,它们被列为“漂移”列,因为您的数据集架构定义了 Parent、Child ... 但您的文件是小写的列名。单击该数据预览屏幕上的“映射漂移”按钮,然后您可以映射接收器中的小写列。 非常感谢。我会试试这个。 您好@Mark Kromer 很抱歉再次打扰您。我按照您的指示在 Source 和 Sink 之间添加了 Map Drifted。请看上面的新截图。我确实将“父”映射到“父”,将“子”映射到“子”,但我仍然在上面的屏幕截图中收到此错误消息。

以上是关于到 Azure SQL 数据库的数据流输出仅包含 Azure 数据工厂中的 NULL 数据的主要内容,如果未能解决你的问题,请参考以下文章

Azure 数据工厂 ADF 数据管道将文件名包含在将数据复制到 sql 数据库中

Azure 数据工厂 - Azure SQL 托管服务不正确的输出列类型

将流分析作业中的输出数据流式传输到 Azure Synapse Analytics sql 池表?

如何将数据库从 SQL 服务器迁移到 SQL Azure,其中包含带有数据的 asp.net 成员资格提供程序

如何使用 azure 流分析根据输出/blob 存储中的数据仅插入不同的行?

Azure 流分析过滤多个输入列以输出到 SQL 表,卡在 5 个接收器的限制