【问题标题】:ADF - Get value from a copy activityADF - 从复制活动中获取价值
【发布时间】:2022-09-02 11:41:06
【问题描述】:

我正在尝试在 ADF 中的复制数据活动中运行 SOQL (SalesForce SQL),以计算具有 where 条件的记录数,并将其写入 .csv 文件到 Azure Blob 存储中。查询工作正常,并在 .csv 文件中写入记录总数。最终,我想使用复制数据活动的输出值(记录数)作为存储过程活动的输入,如下面的片段所示。

复制数据活动中使用的 SOQL:

Select COUNT() from Accounts WHERE SystemModstamp > 2022-09-01T17:11:54Z AND SystemModstamp <= 2022-09-01T17:23:20Z

存储的过程参数值:

@activity('CopyObject').output.value

我不太确定这里应该使用什么存储的 proc 参数。存储过程将复制数据活动的输出写入 db 中的表中。当我使用@activity('CopyObject').output.rowscopied 时它工作正常,但这是一个错误的表达式,因为它总是给出结果为 1。但是我需要该表达式来获取复制数据活动的值。

非常感谢任何帮助/指导。

【问题讨论】:

  • 使用 Lookup 获取标量值,例如计数结果。或者考虑支持输出变量的脚本活动。

标签: azure salesforce azure-data-factory azure-data-factory-2 azure-data-factory-pipeline


【解决方案1】:

表达式 @activity('CopyObject').output.rowscopied 提供了在源和接收器之间复制的记录数,并且由于您在 sql 中的表达式是 count(*) ,因此您总是会看到该值为 1。 为了获得该计数,如评论中所述,您需要使用查找活动或脚本活动来获取相同的 sql 查询值并将其用作 sp 参数值

【讨论】:

  • 我确实使用查找活动来获取计数的值并且它工作正常,问题是当我尝试将此值作为参数传递给下一个活动(这是一个存储过程)时,我不确定表达式应在存储过程参数下的值字段中使用。在添加查找活动后复制数据后,我尝试使用以下表达式。 @activity('查找 CopyObjectBlobOutput').output.value
  • @activity('Lookup CopyObjectBlobOutput').output.value 使用此表达式时出现错误:无法评估表达式'activity('Lookup CopyObjectBlobOutput').output.value',因为属性'value'不存在,可用属性是“firstRow、effectiveIntegrationRuntime、billingReference、durationInQueue”。
  • 嘿@Priyanka2304,您需要在查找活动中启用 firstRow only 属性并使用以下表达式 @activity('Lookup1').output.firstRow
  • 嗨@Nandan,我也尝试过使用该表达式,但它给出了以下错误:无法创建 Sql 源。请仔细检查连接字符串,存储过程设置为正确格式。错误:属性“Value”的值对于存储过程参数“CountRecords”无效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-07
相关资源
最近更新 更多