首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NiFi UpdateRecord不会更新嵌套字段

NiFi UpdateRecord不会更新嵌套字段
EN

Stack Overflow用户
提问于 2019-04-19 19:30:04
回答 1查看 865关注 0票数 1

我正在尝试使用UpdateRecord替换嵌套字段的值。我非常确定我正确地遵循了the documentation,但我只能更新顶级字段的值,即使使用//也不能正常工作。我在下面的UpdateRecord设置中有几个配置,但只有最后一个更新requestObject的配置有效。

我确信我的模式是正确的,因为我已经使用它毫无问题地将XML转换为JSON。

我有以下几点:

输入XML文件:

代码语言:javascript
复制
<request>
    <requestType>BULKRETRIEVE</requestType>
    <requestDomainType>ROI</requestDomainType>
    <systemName>SYSTEMTEST</systemName>
    <location>USA</location>    
    <userInformation>
        <userId>1313</userId>
        <firstName>Some</firstName> <!-- required -->
        <lastName>Guy</lastName> <!-- required -->
        <email>email@address.com</email> <!-- required if phone not included -->
        <phone></phone> <!-- required if email not included -->
    </userInformation>  
    <requestObject>
        <startDate>2019-01-01T00:00:00.000-05:00</startDate>
        <endDate>2019-01-31T00:00:00.000-05:00</endDate>
        <type>ROI</type>
    </requestObject>
</request>

AVRO模式:

代码语言:javascript
复制
{
    "namespace": "com.organization.somethingspecific",
    "name": "request",
    "type": "record",
    "fields": [
      {"name": "requestType", "type": ["string","null"], "default": null},
      {"name": "requestDomainType", "type": ["string","null"], "default": null},
      {"name": "systemName", "type": ["string","null"], "default": null},
      {"name": "location", "type": ["string","null"], "default": null},
      {"name": "userInformation", "type": ["null", {
        "name": "userInformation", "type": "array", "items": {
          "name": "userInformation", "type": "record", "fields": [
            {"name": "userId", "type": ["string","null"], "default": null},
            {"name": "firstName", "type": ["string","null"], "default": null},
            {"name": "lastName", "type": ["string","null"], "default": null},
            {"name": "email", "type": ["string","null"], "default": null},
            {"name": "phone", "type": ["string","null"], "default": null}
          ]
        }
      }], "default": null},
      {"name": "requestObject", "type": ["null",{
        "name": "requestObject", "type": "array", "items": {
          "name": "requestObject", "type": "record", "fields": [
            {"name": "startDate", "type": ["string","null"], "default": null},
            {"name": "endDate", "type": ["string","null"], "default": null},
            {"name": "type", "type": ["string","null"], "default": null}
          ]
        }
      }], "default": null}
    ]
}

我的UpdateRecord处理器配置为:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-22 21:52:10

在您的模式中,requestObject字段是一个数组,因此您不能指定/requestObject/startDate之类的内容,因为它并不表示要更新数组中的哪个元素。

我认为您应该能够执行类似/ requestObject */startDate的操作,即为requestObject数组中的所有条目更改startDate字段。

参考文档:

https://nifi.apache.org/docs/nifi-docs/html/record-path-guide.html

https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-standard-nar/1.9.2/org.apache.nifi.processors.standard.UpdateRecord/additionalDetails.html

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55761154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档