设置数据聚合写入操作。
在系统集成需要处理海量单据时,往往需要对原始数据进行分组合并运算操作。轻易云系统集成平台支持用户自定义配置数据聚合分组合并运算。本章将介绍如何通过轻易云系统集成平台可视化的进行配置。
例如以下电商系统单据:
将多维数据进行拍扁
在进行数据合并操作之前,需要先将这样的数据拍扁进行二维化。
可以参考 《拍扁多维数据》进行配置,将以上数据拍扁如下:
多维数组拍扁参数配置在轻易云系统集成平台的源平台中进行配置.
对拍扁后的数据进行分组合并运算
分组合并运算需要配置的目标写入平台参数内,增加以下配置即可:
"groupCalculate": { "headerGroup": [ "shop_no", "stock_no" ], "bodyGroup": [ "details_spec" ], "bodyName": "details", "targetBodyName":"FEntity", "bodyMaxLine": 50, "calculate": { "details_num": "$sum", "details_amount": "$sum" } },
表头合并参数=>headerGroup
headerGroup 是一个数组参数,用于输入合并运算时候的分组表头。在MongoDB取数时,将先用 headerGroup 分组取出一行数据,然后依次作为参数进行后续的分组运算。
表体合并参数=>bodyGroup
bodyGroup 参数是表体数组参数,用于输入合并运算时的分组表体。
合并后新表体的数组键 => bodyName
bodyName是合并后的数组键名,合并后的表体数据将被存放在这里。
目标单据单据体名称=>targetBodyName
targetBodyName是需要写入的目标单据的单据体名称,主要用于单据体最大行数限制超过时,指定需要拆分的单据体。
单据体最大行数限制=>bodyMaxLine
bodyMaxLine是合并单据体行数限制,合并之后的数据超过最大行数会进行拆分。
需要合并运算的字段=>calculate
calculate对象用于输入需要合并运算的字段,键名代表字段名,值代表需要运算的方式。mongodb aggregate 时可以使用的聚合表达式如下:
表达式 | 描述 | 实例 |
$sum | 计算总和。 | db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}]) |
$avg | 计算平均值 | db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}]) |
$min | 获取集合中所有文档对应值得最小值。 | db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}]) |
$max | 获取集合中所有文档对应值得最大值。 | db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}]) |
$push | 将值加入一个数组中,不会判断是否有重复的值。 | db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}]) |
$addToSet | 将值加入一个数组中,会判断是否有重复的值,若相同的值在数组中已经存在了,则不加入。 | db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}]) |
$first | 根据资源文档的排序获取第一个文档数据。 | db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}]) |
$last | 根据资源文档的排序获取最后一个文档数据 | db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}]) |
被聚合后的数据格式
数据被聚合后,格式将被重整,在配置目标平台写入值时需要依照以下规则填写: