全部文档
文档中心财务模型deepcubedeepcube语法loc计算计算允许的维度成员范围

计算允许的维度成员范围

来源集中是允许使用动态汇总后的单元格的,如下例计算2,我们需要计算每个商品的销售额占全部商品销售总额的占比,因此用当前商品的销售额除以所有商品的销售额,这里所有商品的销售额由于是在通用类维度Product的汇总节点TotalProduct上,并且版本也不具备TopDown属性,因此所有商品的销售额是需要动态汇总出来的,随后再参与销售占比的计算:

Copy
from deepcube.cube.cube import deepcube

def main():
    # 实例一个deepcube对象,传参为cube元素名和path,如果cube元素名在应用中唯一,可以不传path
	cube1 = deepcube('cube1', path='/Consolidation_App/Consolidation/Main_Model')

	# 为了后续计算写法简单,在这里将cube的维度赋值给同名变量(注意这里cube1.year中的year是字段名)
    year = cube1.year
    period = cube1.period
    scenario = cube1.scenario
    version = cube1.version
    entity = cube1.entity
    account = cube1.account
	product = cube1.product

	# 从cube加载数据
    cube1.init_data([year["2022"],
        scenario["Budget"],
        version["V1"],
        period["Q1"].Base(),
        entity["TotalEntity"].Base()])

	# 确定一个背景scope范围
    cube1.scope(year["2022"],
        scenario["Budget"],
        version["V1"],
        period["Q1"].Base(),
        entity["TotalEntity"].Base(),
        product["TotalProduct"].Base()
    )

	# 计算1
    cube1.loc[account['Sales1'], product['p1']] = cube1.loc[
		account['Volume1']] * cube1.loc[account['Price1']]
    # 计算2
    cube1.loc[account['Sales_percent']] = cube1.loc[account['Total_sales']] / cube1.loc[
        account['Total_Sales'], product['TotalProduct']]

    # 将计算结果写入Cube
    cube1.submit_calc()

并且在计算过程中,所有汇总节点的数值都是动态计算得到的,上例中计算1往base节点account[‘Sales1’]和product[‘p1’]计算了数据,计算2的来源集在查询ccount[‘Total_Sales’], product[‘TotalProduct’]的汇总值时,会以上一步计算1算出来的最新结果做汇总。

但对于目标集来说,所有列作用是动态汇总字段的父级节点都是不可以写数的,deepcube会自动忽略计算范围内的动态汇总节点。如下例中,scope内指定了product[“TotalProduct”].IBase(),但是TotalProduct这个节点是动态汇总节点,所以在计算1中,product[“TotalProduct”].IBase()会转为product[“TotalProduct”].Base()进行计算。而对于计算2,在loc中指定了account[‘Total_Sales’],Total_Sales是动态汇总节点,因此整个计算会直接跳过。

Copy
from deepcube.cube.cube import deepcube

def main():
    # 实例一个deepcube对象,传参为cube元素名和path,如果cube元素名在应用中唯一,可以不传path
	cube1 = deepcube('cube1', path='/Consolidation_App/Consolidation/Main_Model')

	# 为了后续计算写法简单,在这里将cube的维度赋值给同名变量(注意这里cube1.year中的year是字段名)
    year = cube1.year
    period = cube1.period
    scenario = cube1.scenario
    version = cube1.version
    entity = cube1.entity
    account = cube1.account
	product = cube1.product

	# 从cube加载数据
    cube1.init_data([year["2022"],
        scenario["Budget"],
        version["V1"],
        period["Q1"].Base(),
        entity["TotalEntity"].Base(),
        product["TotalProduct"].IBase()])

	# 确定一个背景scope范围
    cube1.scope(year["2022"],
        scenario["Budget"],
        version["V1"],
        period["Q1"].Base(),
        entity["TotalEntity"].Base(),
        product["TotalProduct"].IBase()
    )

	# 计算1
    cube1.loc[account['Sales1'], product['p1']] = cube1.loc[
		account['Volume1']] * cube1.loc[account['Price1']]
    # 计算2
    cube1.loc[account['Total_Sales']] = cube1.loc[
		account['Total_Volume']] * cube1.loc[account['Total_Price']]

    # 将计算结果写入Cube
    cube1.submit_calc()

除此之外,还需要注意的是,度量值只有data参与计算,备注不计算。

回到顶部

咨询热线

400-821-9199

我们使用 ChatGPT,基于文档中心的内容以及对话上下文回答您的问题。

ctrl+Enter to send