【问题标题】:Azure-Data-Factory - If Condition returns false despite being logically trueAzure-Data-Factory - 如果条件在逻辑上为真但返回假
【发布时间】:2020-10-20 19:58:08
【问题描述】:

我正在尝试进行逻辑测试来比较两个活动输出。 第一个是返回一个文件名(来自 GetMetaData)和另一个已经在数据库中的不同文件名(来自一个查找活动)。

所以第一个活动是提供 X.csv(Blob0 中的一个文件,而第二个活动是提供一个列表 Y.csv;Z.csv(查找选择的结果与表 X 不同) 基于此结果,我会说逻辑测试是正确的,因此 ADF 必须开始一项特定活动。我正在使用下面的表达式,但尽管没有错误,但结果总是错误的。我究竟做错了什么?我想这与查找活动有关,因为查询会给出我认为的值列表。

请帮助提前谢谢!

@equals(activity('GetBlobName').output,activity('LookupBestandsnaam').output)

输出活动 LookupBestandsnaam:

输出活动 GetBlobName:

【问题讨论】:

  • 两个活动的输出清楚地显示了不同的键和值,并且预计只会返回 false,除非它们与相同的键和值(数量和名称)相同。
  • 谢谢帕特里克。我用 SQL 中的 sp 修复了它

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


【解决方案1】:

Lookup 和 Get Metadata 的输出不同:

我们无法直接比较输出。您将始终在 if 条件表达式中获得 false

请试试下面的表达方式:

@equals(activity('GetBlobName').output.value.name,activity('LookupBestandsnaam').output.value.bestandsnaam)

更新:

恭喜你用另一种方式解决了:

“我现在已将 if 条件替换为存储过程,该存储过程使用基于 ADF 中的查找活动运行的 IF 存在脚本。”

【讨论】:

  • 嗨,莱昂,谢谢您的回答。不幸的是,你的提议没有成功。我现在已将 if 条件替换为存储过程,该存储过程使用基于 ADF 中的查找活动运行的 IF 存在脚本。再次感谢!最好的,
  • @DickterSchiphorst 不客气。我可以将此添加到我的答案中吗?这样其他人就可以知道您的问题现在已解决。
  • 当然,莱昂!感谢您的帮助!
  • @DickterSchiphorst 不客气。你能接受它作为答案吗?这对其他社区成员可能是有益的。谢谢!
猜你喜欢
  • 1970-01-01
  • 2013-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-21
  • 2013-11-09
  • 1970-01-01
相关资源
最近更新 更多