azure - 更新数据时如何在 Sink Tanformation 的关键列中传递数据流参数?
问题描述
我正在通过数据流实现 SCD Type2。我已经在其中创建了一个参数,我将在其中传递一个列名,以及我在关键列的接收器转换中使用的这个参数。
我选择了添加动态内容,然后选择了参数,之后我选择了我在数据流中创建的参数。然后它显示为"$Key_col"。但是当我运行管道时,它给了我一个错误-
{"message":"at Sink 'sink1'(Line 56/Col 6): 列操作数不允许在文字表达式中。详细信息:at Sink 'sink1'(Line 56/Col 6): 列操作数不允许在文字中表达式","failureType":"UserError","target":"Update_Existing_Records","errorCode":"DFExecutorUserError"}
谁能告诉我如何解决此错误或此问题的任何解决方法。
解决方案
键列不支持带参数设置。您只能选择接收器中的存在列。
您在此处选择作为键的列名将被 ADF 用作后续更新、更新插入和删除的一部分。因此,您必须选择 Sink 映射中存在的列。如果您不想将值写入此键列,请单击“跳过写入键列”。
请参考:映射数据流属性。
该参数Key_col
在接收器中不存在,即使它具有相同的名称。
更新:
数据流参数:
如果我们想使用更新,我们必须添加一个 Alter 行:
接收器,键列选择存在列“名称”:
管道运行成功:
希望这可以帮助。
推荐阅读
- php - 需要 PHPMailer 的指导
- java - pcf中的Java springboot
- sap-ase - Sybase ASE 12.5.2 服务器配置错误 208
- haskell - 具有头部功能的 Haskell 懒惰问题
- javascript - 如何在带有nodejs的forloop中使用mysql查询
- java - 即使类是公共的,子类的Java错误访问方法
- javascript - 基于分层数据的 TR id 的条件总和
- asp.net-mvc - 从模型返回sql查询数据到控制器
- java - 递归计数
- node.js - Node.js & Express:如果服务器正在运行,则无响应