我的实际用例更加复杂(并且基于SCD Type 2模板管道),但是在尝试调试错误时,我创建了以下格式的新简化数据流:
数据源(数据集是具有主键列和多个其他可空列的Azure SQL数据库表)
派生列(创建名为"NewRowStatus"
的新列,并将其设置为文字字符串“ Historic”)
更改行(单个条件“ Update If”设置为true(),因此所有行都将更新)
接收到我们开始时使用的同一数据集,将"NewRowStatus"
映射到“行状态”数据库列,并将主键作为键列,以允许更新。
数据预览在数据流中的每个步骤都成功运行,但是当我通过调试管道运行整个数据流时,出现以下错误:
"error": {
"code": 400,
"message": "Job '[jobID] failed due to reason: DF-SYS-01 at Sink 'sink1': java.sql.BatchUpdateException: Invalid column name '{[My Key Column]}'.\njava.sql.BatchUpdateException: Invalid column name '{[My Key Column]}'...
(方括号是我的)
我尝试使用不同的(非关键)列来查看是否有任何不同,但是到目前为止,我还没有管理过一次成功的更新。我不确定是否缺少真正明显的东西,还是ADF仍处于预览状态,这是一个问题,但是任何想法都将不胜感激。
答案 0 :(得分:1)
因此,在尝试获取一些不敏感的屏幕截图时,我创建了一个更简单的新数据流,并且 可以正常工作。经过一番挖掘后,当接收器中的关键字段中有空格时,似乎ADF不喜欢它。修改了Dimension表的键列,使其不包含空格,然后重新运行原始数据流,现在一切正常。