场景背景:某门店预算项目,已有各品类的单价数据,各个门店各品类的销售折扣,销量数据。计算各门店各品类的销售金额,并计算各门店平均折扣和各品类的平均折扣。
财务模型搭建如下:


计算过程:将销售金额从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()
最终结果如图:

回到顶部
咨询热线
