场景背景:某门店预算项目,已有各品类的单价数据,各个门店各品类的销售折扣,销量数据。计算各门店各品类的销售金额,并计算各门店平均折扣和各品类的平均折扣。
财务模型搭建如下:
计算过程:将销售金额从cube1导入到cube2中。数据从entity的大区对应到cube2group维度,account转到报表科目,category维度取汇总节点。
脚本如下:
from deepcube.cube.cube import deepcube
def main(p1, p2):
# 获取表单传参的year,version,period,赋值到变量中
cur_year = p2['Year_wb1']
cur_version = p2['Version_wb1']
cur_period = p2['Period_wb1']
# 实例两个cube对象
cube1 = deepcube('cube1')
cube2 = deepcube('cube2')
# 分别获取两个对象的维度
year = cube1.year
period = cube1.period
scenario = cube1.scenario
version = cube1.version
account = cube1.account
category = cube1.category
entity = cube1.entity
year2 = cube2.year
period2 = cube2.period
scenario2 = cube2.scenario
version2 = cube2.version
account2 = cube2.account
group = cube2.group
# 分别加载两个对象的数据
cube1.init_data([year[cur_year],
scenario["Actual"],
version[cur_version],
account["SalesAmount"],
category['Total'],
period[cur_period],
entity['Total'].Base()])
cube2.init_data([year2[cur_year],
scenario2["Actual"],
version2[cur_version],
period2[cur_period],
account2["6001500101"],
group['Total'].Base()])
# 指定两个cube之间的字段对应关系
cube2.add_relation(cube1, {'year': 'year', 'period': 'period', 'account': 'account', 'version': 'version',
'scenario': 'scenario', 'group': 'entity'})
cube2.scope(year2[cur_year],
scenario2["Actual"],
version2[cur_version],
period2[cur_period],
group["Total"].Base())
cube2.clear_data(account2["6001500101"])
# 计算
cube2.loc[account2["6001500101"]] = cube1.loc[account["SalesAmount"], category['Total']]
cube2.submit_calc()
最终结果如图:
回到顶部
咨询热线