azure-data-factory - 根据 Azure 数据工厂中的第二次查找中的值筛选查找结果

标签 azure-data-factory

我在 ADF 的 Until 事件中进行了两次查找。第一个查找 (BookList) 是一个书籍列表,类似于下面列出的 JSON。

[
  {
    "BookID": 1,
    "BookName": "Book A"
  },
  {
    "BookID": 2,
    "BookName": "Book B"
  }
]

第二个查找是我想要从下面列出的第一个列表 (ExcludedBooks) 中排除的书籍列表。

[
  {
    "BookID": 2,
    "BookName": "Book B"
  }
]

在这两次查找之后,我有一个 Filter 事件,其项目是来自 BookList 查找的值。我希望过滤条件基于未在 ExcludedBooks 值中列出的 BookID 值,但我不确定如何根据 ADF 中的集合函数编写此条件。下面列出了我所拥有的内容,但这些内容不起作用。

@not(contains(activity('ExcludedBooks').output.value, item().BookID))

我意识到解决这个问题的一种方法是循环遍历 ExcludedBooks 的每条记录并使用 SetVariable 构建 BookID 数组的事件,该数组可以与集合函数 Contains() 一起使用,但由于某种原因,ADF 不允许嵌套事件组(Until 中的 ForEach)。

我也无法在 Until 事件之外设置排除的书籍列表,因为它会随着 Until 事件的每次迭代而变化。我还意识到嵌套组事件限制的解决方法是创建一个完全不同的管道,但这并不理想,并且在尝试返回结果时会产生不必要的复杂性。

有人对如何根据另一个查找的结果过滤查找结果有任何建议吗?

最佳答案

以下表达式不起作用,因为 activity('ExcludedBooks').output.value 的 item 是对象,item().BookID 是数字。

@not(contains(activity('ExcludedBooks').output.value, item().BookID))

如果 ExcludedBooks 中的每个项目与 BookList 中的项目相同(如您提供的示例),则可以使用以下表达式:@not(包含(activity('ExcludedBooks').output.value,item()))

我的测试结果:

enter image description here

另一方面,如果您在 ExcludedBooks 中的项目像这样的 json(BookList 与您提供的相同):

[
  {
    "BookID": 2,
    "BookName": "Book B",
    "num": 22
  }
]

您只能使用以下表达式来比较它们的 BookID: @not(contains(join(activity('ExcludedBooks').output.value,','),concat('"BookID":',item().BookID,',')))

(cast activity('ExcludedBooks').output.value to string,concat item() in 'BookList' as "BookID":2, 并检查是否“ExcludedBooks”字符串包含“BookList”项目字符串)

我的测试结果: enter image description here

希望这可以帮助你。

关于azure-data-factory - 根据 Azure 数据工厂中的第二次查找中的值筛选查找结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63906910/

相关文章:

excel - 如何在Azure数据工厂中读取扩展名为.xlsx和.xls的文件?

azure - Azure 数据工厂和 SSIS 中的事务

azure - Azure 数据工厂的 CI/CD - 无法在协作分支中发布

azure - 是否可以在 Azure Synapse Analytics 中动态创建日期数组变量?

azure - 如何在 azure synapse Analytics 中设置两个触发器管道之间的依赖关系

azure - 在 Azure 数据工厂上的 Concat 语句中调用变量

azure - 数据工厂中的“dependsOn”属性错误

c# - 转换 d MMMM yyyy h :mm:ss + CET OR CEST in Azure Data Factory

azure - 触发Azure数据工厂管道

Azure 数据工厂复制数据速度很慢