【问题标题】:ADF Data Flows: invalid column nameADF 数据流:列名无效
【发布时间】:2019-11-17 17:59:24
【问题描述】:

我想创建一个简单的 azure 数据工厂进程来从 blob 存储读取文件 (csv) 并使用数据流将其写入 azure sql 数据库。

源数据集有一个名为“myTime”的列,类型为“string”。

我添加了一个“派生列”来添加一个名为“customTime”的新列,表达式为“currentTimestamp()”

最后,在 sql sink 中,我将“customTime”映射到数据库上的 DateTime 字段。

如果我预览数据流中的数据,一切看起来都很好,我可以看到两个字段(myTime、customTime)。当我调试管道时,我得到以下异常:

Activity myActivity failed: DF-SYS-01 at Sink 'sqlsink': java.sql.BatchUpdateException: Invalid column name 'myTime'

知道为什么 sql 接收器链接到“myTime”而不是“customTime”吗?除了这是输入模式的一部分之外,我没有看到对“myTime”的任何引用。

非常感谢和最好的问候 迈克尔

【问题讨论】:

  • 你在哪里添加了“派生列”?可以给我们截图吗?
  • 包括数据流的截图
  • 你能粘贴你的 DSL 脚本吗?它是 UI 图的代码隐藏。转到您的数据流 UI,然后单击代码 > 计划。我想看看你的映射。谢谢!
  • @MFox 我解决了这个问题,请看我的回答。

标签: azure azure-data-factory


【解决方案1】:

此错误是由列映射引起的。您创建了新列“customTime”,但在您的表中,列名是“myTime”。

我发现csv文件的列名和schema必须与Sink表相同,否则调试时会出错,这是我的错误信息:

解决方案 1::在接收器设置中选择“重新创建表”。但这会改变您的表架构:myTimecustomTime

解决方案 2:Derived Column's Settings中添加与 Sink 表相同的列名。

我用相同的操作进行了测试,它成功了。

我从 blob 存储读取文件 (csv),并使用数据流将其写入我的 Azure SQL 数据库。我创建了一个具有相同架构的 Sink 表。

这是我的 csv 文件:

我的数据流:

第 1 步:来源设置

第 2 步:派生列的设置

第 3 步:接收器设置:

运行成功:

希望这会有所帮助。

【讨论】:

  • 嗨@Leon Yue,非常感谢您的帮助,我设法设置了一个具有以下限制的工作示例: 1. 源列名(或派生列名)必须匹配sink 2.您需要将所有列从源映射到接收器(或使用“选择”模式修饰符仅选择接收器中我们需要的列)。因此,在接收器中使用“映射”似乎没有任何价值,因为它不起作用 - 可能是数据流预览版的限制
猜你喜欢
  • 2020-10-07
  • 1970-01-01
  • 2020-11-13
  • 2021-07-28
  • 2020-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-28
相关资源
最近更新 更多