【问题标题】:Mulesoft: Group data based on date fieldMulesoft:根据日期字段对数据进行分组
【发布时间】:2020-07-03 15:26:55
【问题描述】:

有人可以帮我在 mule 4 中编写 dataweave 吗

CSV 输入

name, dateOfSelected, joiningDate, leavingDate, age
John, 2020-02-20, 2020-02-22, 2020-04-30, 28
Sam, 2020-02-21, 2020-02-22, 2020-04-20, 30
Ben, 2020-03-03, 2020-03-04, 2020-04-29, 34
Mike, 2020-04-21, 2020-04-21, 2020-06-19, 25

预期的 JSON 输出应包含分组在 dateOfSelected 字段值下的名称、加入日期和离开日期

{
  "failedToQuery": "No",
  "result": "success",
  "dataAvailable" : "yes"
  "2020-02-20": {
    "joiningDate": "2020-02-22",
    "leavingDate": "2020-04-30",
    "name": "John"
  },
  "2020-02-21": {
    "joiningDate": "2020-02-22",
    "leavingDate": "2020-04-20",
    "name": "Sam"
  },
  "2020-03-03": {
    "joiningDate": "2020-03-04",
    "leavingDate": "2020-04-29",
    "name": "Ben"
  },
  "2020-04-21": {
    "joiningDate": "2020-04-21",
    "leavingDate": "2020-06-19",
    "name": "Mike"
  }
}

我将运行一个数据库查询,以使用 dateOfSelected 字段值获取 CSV 输入数据。 如果没有从 DB 返回数据,输出应该是

{
      "failedToQuery": "No",
      "result": "Success",
      "dataAvailable" : "no"
}

【问题讨论】:

    标签: transformation dataweave mulesoft mule4


    【解决方案1】:

    你可以使用这个脚本:

    %dw 2.0
    output application/json
    ---
    {failedToQuery: "No"} ++
    {result:"success"} ++
    {dataAvailable: if (isEmpty(payload)) "no" else "yes"} ++
    (payload 
        map $ - "age"   // remove age attribute
        groupBy (item, index) -> item.dateOfSelected
    )
    

    【讨论】:

    • 谢谢,它有效。如果我们有更多的字段需要连同年龄一起排除,我们可以修改像 map $ - {"age", "field1"} 吗?
    • 否,因为{"age", "field1"} 不是有效的表达式。即使您尝试使用列表,- 运算符也不支持它。不过,您可以使用多种操作:map $ - "age" - "joiningDate"
    猜你喜欢
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    相关资源
    最近更新 更多