You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DataWeave嵌套数组排序:按Ticket最新Timestamp降序排列客户

DataWeave 嵌套数组排序解决方案

核心思路

  • 先对每个客户的tickets数组按timestamp降序排列
  • 提取所有客户(跨所有offer),按其tickets中最新的timestamp值降序排序
  • 可选:保留原offer结构,仅对每个offer下的客户按规则排序

示例输入

{
  "offers": [
    {
      "offerId": "Offer1",
      "customers": [
        {
          "customerId": "50001",
          "tickets": [
            {"ticketId": "T1", "timestamp": "2024-01-01T10:00:00Z"},
            {"ticketId": "T2", "timestamp": "2024-01-03T14:30:00Z"}
          ]
        },
        {
          "customerId": "50002",
          "tickets": [
            {"ticketId": "T3", "timestamp": "2024-01-05T09:15:00Z"},
            {"ticketId": "T4", "timestamp": "2024-01-06T16:45:00Z"}
          ]
        }
      ]
    },
    {
      "offerId": "Offer2",
      "customers": [
        {
          "customerId": "60001",
          "tickets": [
            {"ticketId": "T5", "timestamp": "2024-01-04T11:20:00Z"}
          ]
        }
      ]
    }
  ]
}

方案1:扁平化所有客户并排序

该方案将所有offer下的客户合并为一个列表,按规则排序(示例中客户50002会排在首位):

%dw 2.0
output json
---
// 先处理每个客户的tickets排序,再收集所有客户并按最新ticket时间排序
flatten(payload.offers map ($.customers map (
    $ update {
        case tickets -> tickets orderBy ($.timestamp) reverse
    }
))) orderBy (max($.tickets.timestamp)) reverse

方案2:保留原Offer结构并排序客户

该方案保持offer层级不变,仅对每个offer下的客户按规则排序:

%dw 2.0
output json
---
payload update {
    case offers -> offers map (
        $ update {
            case customers -> customers map (
                $ update {
                    case tickets -> tickets orderBy ($.timestamp) reverse
                }
            ) orderBy (max($.tickets.timestamp)) reverse
        }
    )
}

关键说明

  • orderBy ($.timestamp) reverse:对单个客户的tickets数组按timestamp降序排列
  • max($.tickets.timestamp):提取当前客户所有ticket中最新的时间戳,作为客户排序的核心依据
  • flatten():将嵌套在各offer下的客户数组合并为一维数组(仅方案1使用)

内容的提问来源于stack exchange,提问作者Hasan Limon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 03:15:24