更新 Json-Apache-Nifi 中的属性:Jolt

Update Json-Attributes in Apache-Nifi: Jolt

我是 Apache Nifi 的新手,遇到以下问题:我想按如下方式转换 json 文件: 来自:

{
    "Property1": "x1",
    "Property2": "Tag_**2ABC**",
    "Property3": "x3",
    "Property4": "x4"
    }

至:

{
    "**2ABC**_Property1": "x1",
    "**2ABC**_Property3": "x3",
    "**2ABC**_Property4": "x4"
    },

意思是:取某个Attribute的值更新所有其他的attribute。 我可以找到使用 JoltTransformer-Processor 的示例,当更新仅添加一个字符串时效果很好。但不适合我的情况 到目前为止我所做的:我已经使用 evaluateJSONPath 处理器设置了每个属性。但是我只是尝试了很多可能性来使用更新属性处理器来完成它但没有成功。我所有可能的测试看起来像(在 UpdateAttribute 内):

Property1 --> ${'Property2':substring(4,6)}"_"${'Property1'}

使用颠簸:

[
{"operation": "modify-overwrite-beta",
    "spec": {
        "Property1": "${'Property2':substring(4,6)}_${'Property1'}"
            }
}
]

我漏掉了哪一点?提前致谢!

我不知道 Nifi,但这是您可以在 Jolt 中实现的方法。

规格

[
  {
    "operation": "shift",
    "spec": {
      // match Property2
      "Property2": {
        "Tag_*": { // capture the nasty "**2ABC**" part to reference later
          // go back up the tree to the root
          "@2": {
            // match and ignore Property2
            "Property2": null,
            //
            // match Property* and use it and the captured 
            //  "prefix" to create the output key
            //  &(2,1) references the Tag_*, and pull off the "**2ABC**" part
            "Property*": "&(2,1)_&"
          }
        }
      }
    }
  }
]