在系统集成需要处理海量单据时,往往需要对原始数据进行分组合并运算操作。轻易云系统集成平台支持用户自定义配置数据聚合分组合并运算。本章将介绍如何通过轻易云系统集成平台可视化的进行配置。
例如以下电商系统单据:
1644043820(1).jpg

将多维数据进行拍扁

在进行数据合并操作之前,需要先将这样的数据拍扁进行二维化。
可以参考 《拍扁多维数据》进行配置,将以上数据拍扁如下:
1644044131(1).jpg
多维数组拍扁参数配置在轻易云系统集成平台的源平台中进行配置.
1644045156(1).png

对拍扁后的数据进行分组合并运算

分组合并运算需要配置的目标写入平台参数内,增加以下配置即可:

  1. "groupCalculate": {
  2. "headerGroup": [
  3. "shop_no",
  4. "stock_no"
  5. ],
  6. "bodyGroup": [
  7. "details_spec"
  8. ],
  9. "bodyName": "details",
  10. "targetBodyName":"FEntity",
  11. "bodyMaxLine": 50,
  12. "calculate": {
  13. "details_num": "$sum",
  14. "details_amount": "$sum"
  15. }
  16. },

表头合并参数=>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”}}}])

被聚合后的数据格式

数据被聚合后,格式将被重整,在配置目标平台写入值时需要依照以下规则填写:

1644044869(1).jpg