如何从SnapLogic中的数组创建多个记录?

时间:2019-02-20 13:16:41

标签: split transformation snaplogic

在SnapLogic中,是否有简单的方法来获取第一个JSON记录并生成随后显示的输出?

这是要实现的目标的简化版本...

输入记录包含两个变量和一个“ skus”数组,该数组由具有两个变量(“ skucode”和“ shade”)的项组成。

每个输出记录都是输入记录的超集。 每个输出记录将数组上方的数组项之一提升为与输入记录中两个变量相同的级别,如下例所示。

输入:

{
  "code": "ABCD",
  "name": "Product A",
  "sku": [
    {
      "skucode": "ABCD12",
      "shade": "green"
    },
    {
      "skucode": "ABCD13",
      "shade": "brown"
    },
    {
      "skucode": "ABCD14",
      "shade": "blue"
    },
    {
      "skucode": "ABCD15",
      "shade": "red"
    },

  ]
}

输出:

[{
  "code": "ABCD",
  "name": "Product A",
  "skucode": "ABCD12",
  "shade": "green"
  "sku": [
    {
      "skucode": "ABCD12",
      "shade": "green"
    },
    {
      "skucode": "ABCD13",
      "shade": "brown"
    },
    {
      "skucode": "ABCD14",
      "shade": "blue"
    },
    {
      "skucode": "ABCD15",
      "shade": "red"
    },

  ]
},

{
  "code": "ABCD",
  "name": "Product A",
  "skucode": "ABCD13",
  "shade": "brown"
  "sku": [
    {
      "skucode": "ABCD12",
      "shade": "green"
    },
    {
      "skucode": "ABCD13",
      "shade": "brown"
    },
    {
      "skucode": "ABCD14",
      "shade": "blue"
    },
    {
      "skucode": "ABCD15",
      "shade": "red"
    },

  ]
},
{
  "code": "ABCD",
  "name": "Product A",
  "skucode": "ABCD14",
  "shade": "blue"
  "sku": [
    {
      "skucode": "ABCD12",
      "shade": "green"
    },
    {
      "skucode": "ABCD13",
      "shade": "brown"
    },
    {
      "skucode": "ABCD14",
      "shade": "blue"
    },
    {
      "skucode": "ABCD15",
      "shade": "red"
    }
  ]

},
{
  "code": "ABCD",
  "name": "Product A",
  "skucode": "ABCD15",
  "shade": "red"
  "sku": [
    {
      "skucode": "ABCD12",
      "shade": "green"
    },
    {
      "skucode": "ABCD13",
      "shade": "brown"
    },
    {
      "skucode": "ABCD14",
      "shade": "blue"
    },
    {
      "skucode": "ABCD15",
      "shade": "red"
    }
  ]
}
]

1 个答案:

答案 0 :(得分:0)

最简单的解决方法如下:

示例管道:

Sample Pipeline

输入(JSON生成器):

Input

在JSON拆分器之前进行映射:

mapper

JSON分离器:

JSON splitter

在JSON拆分器之后进行映射:

mapper 2

输出:

output

注意:我没有在包含路径中直接使用$sku,而是先将JSON字符串化为一个新字段,然后将其添加到包含路径列表中。这是因为您不能包括要拆分的路径。为了获得最终的期望结果,我再次将JSON文本解析为JSON。

我希望这是你们所需要的:)