【问题标题】:JOLT JSON Transformation single record to multiple recordJOLT JSON 将单条记录转换为多条记录
【发布时间】:2021-12-14 11:27:32
【问题描述】:

我必须进行以下转换。在这种情况下,必须将一条记录分成 3 部分。 cpu,用户和不错。但是需要在所有拆分中拥有主机和时间戳的值,因为它们属于特定的 cpu、用户和 nice

输入

[
  {
    "timestamp": "2021-10-29T18:13:31",
    "host": "bbtpnj33",
    "cpu": "1",
    "user": "5.34",
    "nice": "0"
  },
  {
    "timestamp": "2021-10-29T18:13:32",
    "host": "bbtpnj34",
    "cpu": "2",
    "user": "10",
    "nice": "5"
  }
]

预期输出

[
  {
    "timestamp": "2021-10-29T18:13:31",
    "host": "bbtpnj33",
    "cpu": "1"
  },
  {
    "timestamp": "2021-10-29T18:13:31",
    "host": "bbtpnj33",
    "user": "5.34"
  },
  {
    "timestamp": "2021-10-29T18:13:31",
    "host": "bbtpnj33",
    "nice": "0"
  },
  {
    "timestamp": "2021-10-29T18:13:32",
    "host": "bbtpnj34",
    "cpu": "2"
  },
  {
    "timestamp": "2021-10-29T18:13:32",
    "host": "bbtpnj34",
    "user": "10"
  },
  {
    "timestamp": "2021-10-29T18:13:32",
    "host": "bbtpnj34",
    "nice": "5"
  }
]

我必须使用 NIFI JoltJsonTransformation 来满足 JoltSpec 的需要。我确实尝试了很多,但没有得到有效的答案。我是 Jolt 的新手,请帮忙

我的 JOLT 表情

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "cpu": "[&1][#1].cpu",
        "user": "[&1][#1].user",
        "nice": "[&1][#1].nice"
      }
    }
  }
]

【问题讨论】:

    标签: json apache-nifi jolt


    【解决方案1】:

    对这三个属性( &1_& )和其他属性( &1 )使用不同的限定符作为前缀,以便将它们分隔为两个集合以及一个辅助字符,例如下划线(_),以便在下一次移位操作中用于区分。顺便说一句,无需将每个键名重复为值,而是为每个键使用一个 & 符号。并在最后一步删除所有键,例如

    [
      {
        "operation": "shift",
        "spec": {
          "*": {
            "*": "&1.&",
            "cpu": "&1_&.&",
            "user": "&1_&.&",
            "nice": "&1_&.&"
          }
        }
      },
      {
        "operation": "shift",
        "spec": {
          "*_*": {
            "@(1,&(0,1).timestamp)": "&1.timestamp",
            "@(1,&(0,1).host)": "&1.host",
            "*": "&1.&"
          }
        }
      },
      {
        "operation": "shift",
        "spec": {
          "*": ""
        }
      }
    ]
    

    【讨论】:

    • 感谢您在短时间内提供解决方案。它确实有帮助。如前所述,我是 JOLT 的新手,但我会尝试逐个运行表达式以深入了解它是如何工作的。再次感谢
    猜你喜欢
    • 1970-01-01
    • 2020-09-30
    • 2011-05-10
    • 1970-01-01
    • 2017-02-24
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    • 2023-01-20
    相关资源
    最近更新 更多