首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nifi的Jolt Spec

Nifi的Jolt Spec
EN

Stack Overflow用户
提问于 2018-02-28 13:31:16
回答 2查看 806关注 0票数 1

我是nifi的新手。我试着创建一个jolt规格,但没有得到它。谁能帮帮我。

详细信息如下:流程文件中的属性:详细信息、id、名称、地址、状态

流文件如下:{"to":"xxx1"},{"to":"xxx2"},{"to":"xxx3"},{"to":"xxxn"}

期望以下输出:

代码语言:javascript
复制
       { "details": "personal", 
         "home":[
                  {"mobileno": "xxx1",
                   "id": "1",
                   "name" :"bbb",
                   "address": "Address1" },
                  { "mobileno": "xxx2",
                    "id": "2",
                   "name": "aaa",
                   "address": "address2" }
               ],
           "status": "enabled" } 

我能够发展到这个地步。但是我不知道如何获取"details“字段

代码语言:javascript
复制
[{
  "operation": "shift",
  "spec": {

    "*": "home",
    "mobileno": "home[0].mobileno"
  }
}, {
  "operation": "default",
  "spec": {
    "status": "${status}",
    "home[]": {
      "*": {
        "name": "${name}",
        "id" : "${id},
        "address": "${address}"
      }
    }
  }
}]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-28 20:26:53

在默认操作中,需要添加详细信息属性。

尝试使用以下jolt规范

代码语言:javascript
复制
[{
  "operation": "shift",
  "spec": {

    "*": "home",
    "mobileno": "home[0].mobileno"
  }
}, {
  "operation": "default",
  "spec": {
    "status": "${status}",
    "details":"${details}",
    "home[]": {
      "*": {
        "name": "${name}",
        "id": "${id}",
        "address": "${address}"
      }
    }
  }
}]
票数 0
EN

Stack Overflow用户

发布于 2018-03-01 00:47:02

除了7632695的答案之外,您的换班规范与输入上的"mobileno“不匹配,请尝试以下方法:

代码语言:javascript
复制
[{
  "operation": "shift",
  "spec": {
    "*": {
      "to": "home[&1].mobileno"
    }
  }
}, {
  "operation": "default",
  "spec": {
    "status": "${status}",
    "details": "${details}",
    "home[]": {
      "*": {
        "name": "${name}",
        "id": "${id}",
        "address": "${address}"
      }
    }
  }
}]

还要注意,对于单个流文件,属性是恒定的,因此对于home数组中的每个条目,每个id、name和address字段都是相同的。根据您的属性,JOLT如何知道对第一个元素使用id=1,对第二个元素使用id=2,依此类推?

如果您想使用输入数组的索引作为id,可以将此规范添加到您的链中:

代码语言:javascript
复制
{
    "operation": "shift",
    "spec": {
      "home": {
        "*": {
          "$": "home[&1].id",
          "*": "home[&1].&"
        }
      },
      "*": "&"
    }
}

如果希望它们从1开始而不是从0开始,可以通过将以下等级库添加到链中来为它们添加1:

代码语言:javascript
复制
{
  "operation": "modify-overwrite-beta",
  "spec": {
    "home": {
      "*": {
        "id": "=intSum(@0, 1)"
      }
    }
  }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49022560

复制
相关文章

相似问题

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