|
def data_gen(cates): pipeline
= [ {
'$project' : { 'quantity': 1,'province': 1,'saledate': 1,'category':1 , 'price':1}}, {
'$match':{'$and':[ {
'category':{'$in':cates}}, {
'province':{'$nin':['江苏']}} ]}},
# 先统计每天的销售额,注意$multiply函数的用法 {'$group':{'_id':'$saledate','sum_quantity':{'$sum':{ '$multiply':['$price','$quantity'] }}}},
# 在上面的基础上继续分组,构造月份作为分组依据,注意上面的$saledate变为$_id,sum_quantity变为$sum_quantity,前面有$符号
{'$group':{'_id':{'$concat': [ {'$arrayElemAt': [ {'$split': ['$_id', '-']}, 0 ]},'-', {'$arrayElemAt': [ {'$split': ['$_id', '-']}, 1 ]}]},'sumend':{'$sum':'$sum_quantity'}}},
{'$sort':{'sumend':1}}
]
for i in salesnew.aggregate(pipeline):
data = {
'name': i['_id'],
'data': [i['sumend']],
'type': 'column'
}
yield data
for i in data_gen(['水果','蔬菜','粮食']):
print(i)
series = [i for i in data_gen(['水果','蔬菜','粮食'])]
options = {
'chart' : {'zoomType':'xy'},
'title' : {'text': '销售数量'},
'subtitle': {'text': '图表'},
'yAxis' : {'title': {'text': '数量'}}
}
charts.plot(series,options=options,show='inline') |
|
|