当前位置: 首页 > 知识库问答 >
问题:

dataweave 2中嵌套数组中GroupBy的总和,Mule 4

罗安和
2023-03-14

我想通过使用join_date进行分组并得到平均数量(通过将数量相加然后除以有数量的记录数来制定;不考虑没有数量的记录)。

输入

{
    "number": 282,
    "topic": [
        {
            "fruit": "apple",
            "colour": "red",
            "join_date": "today",
            "quality": [
                {
                    "date": "2020-08-21",
                    "in": {
                        "feedback": "good",
                        "qty": "3 qty"
                    },
                    "out": {
                        "feedback": "poor",
                        "qty": "1 qty"
                    }
                },
                {
                    "date": "2020-08-21",
                   "in" :{}
                },

                {
                    "date": "2020-08-22",
                    "in": {
                        "feedback": "normal",
                        "qty": "3 qty"
                    }
                } 

]},
{
            "fruit": "banana",
            "colour": "yellow",
            "join_date": "Yesterday",
            "quality": []
} ] }

以下是预期输出的示例:

输出

number, fruit, colour, join_date, avginqty, avgoutqty
282, apple, red, today,  3 qty, 1 qty
282, banana, yellow, yesterday, ,

非常感谢。

共有2个答案

郭元凯
2023-03-14

使用groupBy函数对记录进行分组,并筛选以忽略所有小于零的数量。

过滤器

群友

基本转换如下,请添加分组依据并相应地过滤 -

    %dw 2.0
output application/csv
---
payload.topic[0].quality map ({
     number: payload.number,
     fruit: payload.topic[0].fruit,
     colour: payload.topic[0].colour,
     date:$."date",
     feedback_in: $.in.feedback,
     qty_in: $.in.qty,
     feedback_out: $.out.feedback,
     qty_out: $.out.qty
     })
司马自明
2023-03-14

对于你问的上一个问题,有很多方法可以解决问题,这应该给你一个足够公平的想法来开始如何解决这个问题。对于您的问题,输入和预期输出,请在您的尝试(DW脚本)中发布解决问题以及您在哪里遇到问题。

你也可以利用教程附带的操场来帮助你更好地理解用法。

脚本

%dw 2.0
output application/csv
import * from dw::core::Arrays
---
flatten(payload.topic  groupBy $.join_date mapObject ((item) -> {
     temp: (if(sizeOf(item.quality)==0) [{}] else item.quality) default [{}] map {
     number: payload."number",
     fruit: item.fruit[0],
     colour: item.colour[0],    
     join_date: item."join_date"[0] default "",
     avginqty: ((($.in..qty) sumBy ($ splitBy " ")[0])/(($.in..qty) countBy ($ splitBy " ")[0] as Number  > -1)) ++ " qty" default " ",
     avgoutqty: ((($.out..qty) sumBy ($ splitBy " ")[0])/(($.out..qty) countBy ($ splitBy " ")[0] as Number  > -1)) ++ " qty" default " ",
     }
}) pluck $)

输出

number,fruit,colour,join_date,avginqty,avgoutqty
282,apple,red,today,3 qty,1 qty
282,banana,yellow,Yesterday, , 
 类似资料:
  • 本文向大家介绍C ++中的数组嵌套,包括了C ++中的数组嵌套的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个长度为N的零索引数组A,其中包含从0到N-1的所有整数。我们必须找到并返回集合S的最长长度,其中S [i] = {A [i],A [A [i]],A [A [A [i []]],...}以下规则。现在考虑S中的第一个元素以索引= i的元素A [i]的选择开始,S中的下一个元素应为A

  • 问题内容: 在我正在处理的集合中,文档如下所示: 我写了这个Mongoose模式来访问它: 当我查询文档时,一切正常,控制台中显示的输出正确。但是当我尝试执行console.log(myDoc.stuff)时,得到了以下信息: 代替 我究竟做错了什么?谢谢您的帮助!! 问题答案: 免责声明:此回复的日期过早,2012年!这可能不是最准确的。 从猫鼬的文档。 http://mongoosejs.co

  • 问题内容: 我有以下mongodb文件结构: 我已经能够使用$ elemMatch来更新操作中的字段,但是当我尝试对参数执行相同的操作(修改)时,它似乎不起作用。我想知道我应该尝试哪种其他方法,以便能够成功更新特定参数中的字段(通过其pid查找)。 我当前拥有但不起作用的更新代码如下所示: 问题答案: MongoDB 3.6及更高版本 MongoDB3.6及更高版本提供了一项新功能,该功能允许您使

  • 问题内容: 我经常使用pandas groupby生成堆积表。但是然后我经常想将生成的嵌套关系输出到json。有什么方法可以从生成的堆叠表中提取嵌套的json文件吗? 假设我有一个df,例如: 我可以: 美丽!当然,我真正想做的是通过命令沿着grouped.to_json嵌套嵌套的json。但是该功能不可用。任何解决方法? 所以,我真正想要的是这样的: 唐 问题答案: 我认为熊猫没有内置任何东西可

  • 问题内容: 我已经开始使用https://mholt.github.io/json-to-go/将API JSON转换为go结构,但我真的很喜欢它,但是我仍然坚持如何在Report Definition结构中初始化Filters数组结构如下所示。 我似乎无法引用在Filters结构甚至是Filters结构中声明的项,以创建新的Filter项目并将其附加到Filters。 是否可以使用原样编写的Re

  • 这是我的架构: