如何在MongoDB Charts中生成月度销售差值对比图表?
在MongoDB Charts中创建当月与上月销售差值图表
步骤1:编写聚合管道计算每月销量及差值
先对SalesHeaders集合做聚合处理,统计每月销售数量后关联上月数据计算差值。假设集合包含销售日期字段saleDate、门店字段storeId,可使用以下聚合管道:
[ // 按月份+门店分组,统计当月销售笔数 { $group: { _id: { year: { $year: "$saleDate" }, month: { $month: "$saleDate" }, storeId: "$storeId" }, currentMonthSales: { $sum: 1 } } }, // 按门店、时间排序,为窗口函数做准备 { $sort: { "_id.storeId": 1, "_id.year": 1, "_id.month": 1 } }, // 用窗口函数获取上月销量 { $setWindowFields: { partitionBy: "$_id.storeId", sortBy: { "_id.year": 1, "_id.month": 1 }, output: { previousMonthSales: { $lag: "$currentMonthSales", offset: 1 } } } }, // 计算当月与上月销量差值,生成月份标签 { $addFields: { salesDifference: { $subtract: ["$currentMonthSales", "$previousMonthSales"] }, monthLabel: { $dateToString: { format: "%Y-%m", date: { $dateFromParts: { year: "$_id.year", month: "$_id.month" } } } } } }, // 过滤无上月数据的月份(如年度首月) { $match: { previousMonthSales: { $ne: null } } } ]
步骤2:在MongoDB Charts中创建数据集
- 打开MongoDB Charts进入目标项目,点击**"Add Data Source"**,选择对应集群与SalesHeaders集合。
- 进入**"Create Dataset",选择"Aggregation Pipeline",粘贴上述聚合管道,点击"Run Pipeline"**验证数据后保存数据集。
步骤3:创建差值图表
- 点击**"Create Chart"**,选择刚创建的数据集。
- 选择图表类型:推荐用柱状图(直观展示正负差值)或折线图(查看差值趋势)。
- 配置字段:
- X轴:选择
monthLabel(展示月份) - Y轴:选择
salesDifference(展示差值) - 若需按门店区分,将
storeId拖至**"Series"或"Color"**字段,实现多门店对比。
- X轴:选择
- 调整样式:设置Y轴显示正负值、添加数据标签展示具体差值、修改图表标题为"当月与上月销售数量差值"。
注意事项
- 若集合中日期、门店字段名称不同,需替换为实际字段名。
- 如需按其他维度(如区域、品类)分组,在
$group的_id中添加对应字段即可。
内容的提问来源于stack exchange,提问作者André Ferreira
相关产品推荐
相关产品推荐

