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

颠簸转换以将重复列“取消透视”到嵌套的 JSON 数组中

东方淇
2023-03-14

我的源数据是一个巨大的扁平CSV,其中包含我想要规范化并存储在多个单独的数据库表中的数据。我想知道是否可以使用JOLT转换来改变CSV数据的结构,我已经有了一个平面JSON对象。

例如,下面的对象有两个“父”行和三个重复的列对,它们是“子”行:

{
  "id": 1,
  "name": "zzz",
  "code_1": "abc",
  "date_1": "2021-01-01",
  "code_2": "def",
  "date_2": "2021-01-02",
  "code_3": "ghi",
  "date_3": "2021-01-03"
}

我可以使用JOLT生成输出吗:

{
  "id": 1,
  "name": "zzz",
  "codes": [
    {
      "code": "abc",
      "date": "2021-01-01"
    },
    {
      "code": "def",
      "date": "2021-01-02"
    },
    {
      "code": "ghi",
      "date": "2021-01-03"
    }
  ]
}

我在Jolt游乐场附近玩过,但到目前为止,我还没有找到可以实现这一目标的东西。

欢迎任何提示、提示或建议。

提前感谢。

更新:

我越来越近了,具有以下规格和输出。但是,我的代码和日期位于不同的对象中:

规范:

[
  {
    "operation": "shift",
    "spec": {
      "identifier": "id",
      "name": "name",
      "code*": "codes[].code",
      "date*": "codes[].date"
    }
  }
]

输出:

{
  "id" : 1,
  "name" : "zzz",
  "codes" : [ {
    "code" : "abc"
  }, {
    "date" : "2021-01-01"
  }, {
    "code" : "def"
  }, {
    "date" : "2021-01-02"
  }, {
    "code" : "ghi"
  }, {
    "date" : "2021-01-03"
  } ]
}

(编辑:更正了所需的输出。

共有1个答案

欧阳勇军
2023-03-14

在第一步中,当元素按_1、_2、_3分组在公共编号的键下时,可以使用两次移位变换,然后删除这些对象的键,同时将它们嵌套在代码列表中,例如

[
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "code*": { "@": "&(0,1).code" },
      "date*": { "@": "&(0,1).date" }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "_*": "codes[]",
      "*": "&"
    }
  }
]
 类似资料:
  • 我正在尝试转换一个包含数组的JSON对象,并将数据卸载为单独的JSON。基本上,我需要为数组的每个元素创建一个对象,并复制所有外部数据。示例: 输入 预期产出 我尝试的规格: 我对 Jolt 很陌生,并尝试了几个不起作用的规格。我在取消嵌套部分时遇到问题。谢谢你的帮助。

  • 我需要Jolt转换的帮助。我有数组,由许多json对象组成。(https://jolt-demo.appspot.com/) Jolt需要进行哪些转换才能获得以下结果? 现在我有了下一个Jolt构造: 但以下结果不正确:

  • 我正在尝试为以下输入创建震动转换: 所需输出为: 我刚刚开始理解jolt转换的基础,但是对于嵌套结构来说,这似乎有点复杂。

  • 我正在尝试在NIFI中创建一个jolt转换,我有一个带有标题、细节和行细节的JSON消息作为带有行细节对象的数组。 我们可以将标头/详细JSON转换为详细JSON吗?每个详细都有一个单独的JSON,带有2个新标签,具有“TRADETYP”和“TRANSPORT_CODE”的详细属性值的扁平数组 "TRADETYPALLLINES":["GR"、"EXP"、"SE"]"TRANSPORT_CODE_

  • 我需要在输入JSON下面转换为输出JSON,但不确定如何编写规范。需要将一个字段(“主页”)重新定位为根元素。任何帮助或建议都将不胜感激。 输入JSON: 输出JSON:

  • 我正在尝试使用Jolt将平面结构映射到层次结构http://jolt-demo.appspot.com/#andrewkcarter2: 我的输入是一个包含客户详细信息的平面结构:下面是我的JSON输入: 这是我的 JOLT 规格: 我得到的结果是: 在上面的输出中,我们看到帐户1001和1002重复交易的次数。我不希望这种情况发生,我希望交易被归类在各自的账户下。 所以,我想要的输出应该是: 类