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

适用于Nifi的Jolt Spec

郦昆
2023-03-14

我是尼菲的新手。我试图创建一个颠簸规范,但没有得到它。谁能帮帮我。

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

流文件看起来像:[{“to”:“xxx1”},{“to”:“xx2”}、{“to”:“xxx3”}和{“到”:“XXX”}]

预期以下输出:

       { "details": "personal", 
         "home":[
                  {"mobileno": "xxx1",
                   "id": "1",
                   "name" :"bbb",
                   "address": "Address1" },
                  { "mobileno": "xxx2",
                    "id": "2",
                   "name": "aaa",
                   "address": "address2" }
               ],
           "status": "enabled" } 

我能够发展到这个。但是我不知道如何获取“详细信息”字段

[{
  "operation": "shift",
  "spec": {

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

共有2个答案

芮岳
2023-03-14

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

尝试以下颠簸规格

[{
  "operation": "shift",
  "spec": {

    "*": "home",
    "mobileno": "home[0].mobileno"
  }
}, {
  "operation": "default",
  "spec": {
    "status": "${status}",
    "details":"${details}",
    "home[]": {
      "*": {
        "name": "${name}",
        "id": "${id}",
        "address": "${address}"
      }
    }
  }
}]
翟光赫
2023-03-14

除了7632695的答案之外,您的班次规格与输入上的“mobileno”不匹配,请尝试以下操作:

[{
  "operation": "shift",
  "spec": {
    "*": {
      "to": "home[&1].mobileno"
    }
  }
}, {
  "operation": "default",
  "spec": {
    "status": "${status}",
    "details": "${details}",
    "home[]": {
      "*": {
        "name": "${name}",
        "id": "${id}",
        "address": "${address}"
      }
    }
  }
}]

另外,请注意,对于单个流文件,属性是恒定的,因此对于主数组中的每个条目,每个id、名称和地址字段都是相同的。根据您的属性,JOLT如何知道第一个元素使用id=1,第二个元素使用id=2,以此类推?

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

{
    "operation": "shift",
    "spec": {
      "home": {
        "*": {
          "$": "home[&1].id",
          "*": "home[&1].&"
        }
      },
      "*": "&"
    }
}

如果您希望它们从1开始,而不是从0开始,您可以通过将以下规范添加到链中,将1添加到每一个:

{
  "operation": "modify-overwrite-beta",
  "spec": {
    "home": {
      "*": {
        "id": "=intSum(@0, 1)"
      }
    }
  }
}
 类似资料:
  • 我正在为Apache NIFI开发一个Milo OPCUA处理器和服务。处理器和服务编译得很好,我可以用它们启动NiFi。但是,当试图为我刚刚添加的处理器配置服务时,它只是说“没有找到适用于此属性的控制器服务类型”。 以下是我的邮件: 我错过了什么?

  • 问题内容: 嗨,我只是简单地尝试在www.example.com上获取h1标签,该标签显示为“ Example Domain”。该代码适用于http://www.example.com,但不适用于https://www.exmaple.com。我该如何解决这个问题?谢谢 问题答案: PhantomJSDriver不支持(所有)DesiredCapabilities。 你会需要: 记录在这里:htt

  • 所以我使用这种方法写入文件,它在windows上运行完全正常,但在mac上运行时,它会创建文件,但它们是空的。 我知道数据是正确的,因为它打印正确。感谢您的任何帮助,这真的让我绊倒了。

  • 问题内容: 我正在尝试使用 ARMA ARIMA模型预测每周销售量。我找不到用于调整中的order(p,d,q)的函数。当前,R具有将调整(p,d,q)参数的功能。 如何为模型选择正确的顺序?python中有为此目的提供的任何库吗? 问题答案: 您可以实现多种方法: 包括和。根据它们的定义(请参阅此处和此处),这些条件会对模型中的参数数量造成不利影响。因此,您可以使用这些数字来比较模型。scipy

  • 问题内容: 我在阅读有关docker的一个不错的问题-回答了有关docker实现细节的概述。我想知道在Windows平台上是否可以做这样的事情。 是否存在Windows替代Docker? 从理论上讲,可以使用其他(基于Windows的)组件来构建它吗? 更新1 : 稍微相关的问题(沙盒处理):是否存在用于Windows平台的轻型,可编程的Sandbox API? Update2 :: 有关如何在W

  • 问题内容: 我有一个包含两个内部div的容器div;两者在容器中的宽度和高度均应为100%。 我将两个内部div都设置为100%高度。在Firefox中效果很好,但是在IE中,div不会拉伸到100%的高度,而只会拉伸其中文本的高度。 以下是样式表的简化版本。 我做错什么了吗?还是我错过了任何Firefox / IE怪癖? 问题答案: 我认为“在Firefox中工作正常”仅在 Quirks模式下