【问题标题】:Improve JOLT spec to get expected result改进 JOLT 规格以获得预期结果
【发布时间】:2021-11-19 10:11:53
【问题描述】:

源 JSON:

[
  {
    "other": false,
    "granularity": [
      {
        "impressions": 15,
        "date": "2021-11-02"
      },
      {
        "impressions": 67,
        "date": "2021-11-03"
      }
    ],
    "metadata": {
      "adGroupId": 5792423,
      "startTime": "2021-06-29T21:00:00.000"
    }
  },
  {
    "other": false,
    "granularity": [
      {
        "impressions": 226,
        "date": "2021-11-02"
      },
      {
        "impressions": 2339,
        "date": "2021-11-03"
      }
    ],
    "metadata": {
      "adGroupId": 578101600,
      "startTime": "2021-06-29T08:05:52.176"
    }
  }
]

我试过这个规范:

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "granularity": {
          "*": "[&2].&"
        },
        "metadata": {
          "adGroupId": "[&2].adGroupId"
        }
      }
    }
  }
]

结果:

[
  {
    "0": {
      "impressions": 15,
      "date": "2021-11-02"
    },
    "1": {
      "impressions": 67,
      "date": "2021-11-03"
    },
    "adGroupId": 5792423
  },
  {
    "0": {
      "impressions": 226,
      "date": "2021-11-02"
    },
    "1": {
      "impressions": 2339,
      "date": "2021-11-03"
    },
    "adGroupId": 578101600
  }
]

我想从顶层删除这些索引0,1,...etcadGroupId 应该在每一行中。

所以我期待这个结果:

[
  {
    "impressions": 15,
    "date": "2021-11-02",
    "adGroupId": 5792423
  },
  {
    "impressions": 67,
    "date": "2021-11-03",
    "adGroupId": 5792423
  },
  {
    "impressions": 226,
    "date": "2021-11-02",
    "adGroupId": 578101600
  },
  {
    "impressions": 2339,
    "date": "2021-11-03",
    "adGroupId": 578101600
  }
]

如何解决?谢谢!

【问题讨论】:

    标签: jolt


    【解决方案1】:

    您可以收集granularity键下的键值对,同时在子键前面加上[&3].&1.,以便向上三层选择公共索引,然后在最后一步删除索引的键比如

    [
      {
        "operation": "shift",
        "spec": {
          "*": {
            "granularity": {
              "*": {
                "*": "[&3].&1.&",
                "@(2,metadata.adGroupId)": "[&3].&1.adGroupId"
              }
            }
          }
        }
      },
      {
        "operation": "shift",
        "spec": {
          "*": {
            "*": ""
          }
        }
      }
    ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-13
      相关资源
      最近更新 更多