【问题标题】:Dataweave 2.0 maxBy and filterDataweave 2.0 maxBy 和过滤器
【发布时间】:2019-07-31 04:49:00
【问题描述】:

我想按最大值过滤数组,并让它返回具有该值的所有元素。 Dataweave 只返回 1。

这是 Mule 4 上的 dataweave 2.0。首先,应该有一个 groupBy 来对具有相同 id 的元素进行分组。然后,在每个元素组中,应该搜索最大的 check_date,并且只返回每个元素组中具有该日期的那些。

%dw 2.0
output application/json

var arr = [
  {
    "id": "001P000001MPf0XIAT",
    "code": "580",
    "type": "M",
    "check_date": "2017-09-08T12:00:00"
  },
  {
    "id": "001P000001MjaVOIAZ",
    "code": "ZN1",
    "type": "A",
    "check_date": "2018-05-01T12:00:00"
  },
  {
    "id": "001P000001MjaVOIAZ",
    "code": "ZN1",
    "type": "M",
    "check_date": "2018-05-01T12:00:00"
  },
  {
    "id": "001P000001MjaVOIAZ",
    "code": "ZN1",
    "type": "A",
    "check_date": "2017-11-01T12:00:00"
  },
  {
    "id": "001P000001MPf0XIAT",
    "code": "580",
    "type": "M",
    "check_date": "2019-04-12T12:00:00"
  }
]
---
arr groupBy $.id mapObject (value,key) -> { 
    grouping:{
        id:key,
        rows:value maxBy $.check_date
    }
}

【问题讨论】:

    标签: dataweave


    【解决方案1】:
    rows: value filter ((item, index) -> 
        item.check_date == (value maxBy $.check_date).check_date)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多