全部文档
文档中心财务模型deepcubedeepcube语法loc计算文本类型科目计算

文本类型科目计算

对于文本科目类型,sdk中提供以下几种能力:

  • 可以用init_data从财务模型中加载文本类型科目数据

  • 可以用loc取数,并且支持to_dataframe()

  • 可以用于loc中cube.data过滤条件

  • 可以用loc赋值,但只能赋字符串类型常量

  • 可以用clear清数

  • 可以用submit_calc写回财务模型

文本类型科目不适用的场景如下:

  • 作为来源集参与运算

  • 使用assign_dataframe写回

  • 使用计算函数

  • 上卷汇总计算

Copy
from deepcube.cube.cube import deepcube
from deepcube.cube.column import col


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

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

    # 从系统的财务模型中加载数据。
    cube1.init_data([year["2021"],
                     scenario["Actual"],
                     account["NUM1", "TEXT1"],
                     version["Working"]])

    # 确定一个背景scope范围
    cube1.scope(year["2021"],
                scenario["Actual"],
                version["Working"],
                period["YearTotal"].Base(),
                product["TotalProduct"].Base(),
                )
    # 清数,可以为文本类型科目清数
    cube1.clear_data(account["TEXT1"])

    # 赋值字符串
    cube1.loc[account["TEXT1"]] = 'abc'

    # 过滤文本类型值,取数并to_dataframe,需要注意写法与decimal_val有所不同
    df = cube1.loc[account["TEXT1"]].loc[col('string_val') == 'Y'].to_dataframe(dtype='string')

    # 将计算结果写入系统的财务模型中
    cube1.submit_calc()

    # ---------以下是不支持的用法------------
    # 给文本类型科目赋值数值
    cube1.loc[account["TEXT1"]] = 123
    # 使用另一个数据块给文本类型科目赋值
    cube1.loc[account["TEXT1"]] = cube1.loc[account["TEXT2"]]
    # 将文本类型科目的dataframe写回cube
    cube1.assign_dataframe(df)

回到顶部

咨询热线

400-821-9199

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

ctrl+Enter to send