【问题标题】:How to remove the matched elements from the given array of strings using jolt?如何使用 jolt 从给定的字符串数组中删除匹配的元素?
【发布时间】:2021-07-09 20:48:27
【问题描述】:

输入Json:

{
  "dynamicArray1" : [ "A", "C", "E", "J" ],
  "dynamicArray2" : [ "A", "B", "C" ,"L"]
}

预期输出:

{

"unmatchedElements"  : ["B","L"]

}

我收到两个动态String数组,如上图,然后需要匹配dynamicArray2中dynamicArray1的值,并从dynamicArray2中移除匹配的元素,最后应该在输出数组中给出dynamicArray2的不匹配元素如上图。

【问题讨论】:

  • @mattyb 是否可以使用 jolt 实现这一目标?

标签: apache-nifi jolt


【解决方案1】:

虽然不是 Jolt,但这可以通过 ScriptedTransformRecord 完成。好处是您不需要将 JSON 拆分为唯一的 FlowFile。

ScriptedTransformRecord docs

ScriptedTransformRecord examples

Python:

a = record.getValue("dynamicArray1")
b = record.getValue("dynamicArray2")
diff = list(set(b).difference(a))
record.setValue("unmatchedElements",diff)
_ = record

输出:

[ {
  "dynamicArray1" : [ "A", "C", "E", "J" ],
  "dynamicArray2" : [ "A", "B", "C", "L" ],
  "unmatchedElements" : [ "B", "L" ]
} ]

然后删除您不需要的字段(您可以通过将 JSONRecordSetWriter 架构设置为只有 unmatchedElements 字段来实现,这将删除其他字段)。

在此处流式传输 JSON https://pastebin.com/2z7JuQ1G

【讨论】:

    猜你喜欢
    • 2018-06-03
    • 1970-01-01
    • 2014-07-05
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    • 2022-11-16
    相关资源
    最近更新 更多