Jolt 映射带条件的输入字段

时间:2021-02-11 12:34:08

标签: json jolt

我想在我只需要将一个输入映射到输出的地方制造一些震动。

感谢任何帮助或建议。

  • 如果 topicA.ownertopicZ.owner 都存在输出 owner.name 应映射到 topicZ.owner

  • 如果 topicA.owner 仅输出 owner.name 应该映射到 topicA.owner

  • 如果 topicZ.owner 仅输出 owner.name 应该映射到 topicZ.owner

输入:

CREATE INDEX performance_idx ON daily_factors (factor_date);

震动:

{
  "topicA": {
    "owner": "topic_a_owner"
  },
  "topicZ": {
    "owner": "topic_z_owner"
  }
}

预期输出:

[
  {
    "spec": {
      "*": {
        "ta": "@(2,topicA.owner)",
        "za": "@(2,topicZ.owner)"
      }
    },
    "operation": "modify-default-beta"
  },
  {
    "operation": "shift",
    "spec": {
      "topicA": {
        "ta": "owner.name"
      },
      "topicZ": {
        "za": "owner.name"
      }
    }
  }
]

1 个答案:

答案 0 :(得分:0)

您提到的3个条件可以简化为以下2个条件。

  • 如果 topicZ.owner 出现,(不管 topicA.owner 是否出现),那么输出 owner.name 应该被映射topicZ.owner(这将合并您的第一个和第三个条件)
  • 如果 topicA.owner 仅呈现,则输出 owner.name 应映射到 topicA.owner

所以在此基础上,可以进行以下操作。

  1. 使用 modify-default-beta 操作将 topicA.owner 的值复制到 topicZ.owner 字段topicZ.owner 不存在时
  2. 使用 shift 操作将 topicZ.owner 的值映射到输出中的 owner.name 字段。
[
  {
    "spec": {
      "topicZ": {
        "owner": "@(2,topicA.owner)"
      }
    },
    "operation": "modify-default-beta"
  },
  {
    "operation": "shift",
    "spec": {
      "topicZ": {
        "owner": "owner.name"
      }
    }
  }
]

相关问题