全部文档
文档中心财务模型deepcubedeepcube语法清数

清数

deepcube清数有两种方式,clear_data和赋空值。

clear_data

clear_data的清数效率更高,开销也小。

需要注意的是,为了提升deepcube的执行性能,clear_data只会删掉指定范围内python内存中存在的数据,而不是将指定范围的笛卡尔积赋空值(这种操作会极大拉低计算效率)。因此想要达到清数效果,需要在init_data的时候,将要清数的数据块从财务模型中加载到python内存,也就是说,init_data指定的范围需要包含后续clear_data的数据范围。

但是往往在计算时,我们都是需要清掉目标集原本数据的,所以建议所有计算脚本在init_data时指定的范围包括所有目标集,并使用clear_data清数。

与loc规则相似,未指定的维度从scopes中找,clear_data中指定的维度,会替换scopes中的范围。

Copy
def main():
    con_entity = p2['Entity']
	cube1 = deepcube('cube1')
    entity = cube1.Entity
    partner = cube1.Partner
    account = cube1.Account
    value = cube1.Value

    cube1.init_data([account['6602'].Base() + account['6604'].Base(),
        partner['Internal'].Base(), 
        value['Elimination']])

    cube1.scope(account['6602'].Base() + account['6604'].Base(),
        partner['Internal'].Base(), 
        value['Elimination'])

    cube1.clear_data(account['999'])
    cube1.submit_calc()

赋空值

如果不init加载要清掉的数据,也可以实现最终财务模型层面的数据清除,可以使用给对应数据范围赋空值的方式。这种方式会给指定范围的笛卡尔积赋空值,但是开销大,性能慢
Copy
def main():
    con_entity = p2['Entity']
	cube1 = deepcube('cube1')
    entity = cube1.Entity
    partner = cube1.Partner
    account = cube1.Account
    value = cube1.Value
    cube1.scope(account['6602'].Base() + account['6604'].Base(),
audittrail['REPORT'],
partner['Internal'].Base(), 
value['Elimination'])

    cube1.loc[account['999']] = None
    cube1.submit_calc()

回到顶部

咨询热线

400-821-9199

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

ctrl+Enter to send