当前位置: 首页 > 知识库问答 >
问题:

Apache NIFI:UpdateRecord替换子值

孟永望
2023-03-14

我试图使用UpdateRecord1.9.0处理器修改一个JSON,但它并没有像我想要的那样替换这些值。

{
    "type": "A",
    "ids": [{
            "id": "1",
            "value": "abc"
        }, {
            "id": "2",
            "value": "def"
        }, {
            "id": "3",
            "value": "ghi"
        }
    ]
}
{
    "ids": [{
            "userId": "1",
        }, {
            "userId": "2",
        }, {
            "userId": "3",
        }
    ]
}

和'id'和'value',而ID则使用'userid'字段来代替'id'和'value'。

为了填充userId的值,我定义了replace策略和要replace的属性:strategy

但输出是错误的。userId总是用数组中最后一个元素的id填充:

{
    "ids": [{
            "userId": "3"
        }, {
            "userId": "3"
        }, {
            "userId": "3"
        }
    ]
}

我做错了什么?

谢谢

共有1个答案

谷梁翰飞
2023-03-14

最后,我使用了JoltJSONTransform处理器而不是UpdateRecord

JoltJsonTransform

模板:

[
    {
        "operation": "shift",
        "spec": {
            "ids":{
                "*":{
                    "id": "ids[&1].userId"
                }
            }
        }
    }
]

比UpdateRecord容易

 类似资料:
  • 问题 你需要用另一个值替换字符串的一部分。 解决方案 使用 JavaScript 的 replace 方法。它与给定字符串匹配,并返回已编辑的字符串。 第一个版本需要 2 个参数:模式和字符串替换 "JavaScript is my favorite!".replace /Java/, "Coffee" # => 'CoffeeScript is my favorite!' "foo bar b

  • 我是新来的,无法实现我想要的结果。 我试图存根AWS S3 API返回测试提供的对象。 我的生产代码有: 我的测试代码有: 当我运行测试时,AWS S3类实例被完全截短了,这很好,但它并没有调用我的fake。 我错过了什么?

  • Git 对象是不可改变的,但它提供一种有趣的方式来用其他对象假装替换数据库中的 Git 对象。 replace 命令可以让你在 Git 中指定一个对象并可以声称“每次你遇到这个 Git 对象时,假装它是其他的东西”。 在你用一个不同的提交替换历史中的一个提交时,这会非常有用。 例如,你有一个大型的代码历史并想把自己的仓库分成一个短的历史和一个更大更长久的历史,短历史供新的开发者使用,后者给喜欢数据

  • 问题内容: 说我有一个文件,其中包含一些文本。其中包含子字符串,例如“ substr1”,“ substr2”,“ substr3”等。我需要将所有这些子字符串替换为其他文本,例如“ repl1”,“ repl2”,“ repl3”。在Python中,我将创建一个这样的字典: 并创建用’|’组合键的模式,然后替换为function。在Java中有类似的简单方法吗? 问题答案: 这是您的Python

  • 引用脚本的内容: ; NSIS 中自动替换背景图片的例子 ; 需要新版的 nsWindows 插件与头文件 ; 脚本编写: ; X-Star @ ; zhfi @ !addincludedir .\include !addplugindir .\plugins ;替换图片的时间间隔(ms) !define TimeForChange 3000 ;图片数量范围 !define MinBg