对于文本科目类型,sdk中提供以下几种能力:
可以用init_data从财务模型中加载文本类型科目数据
可以用loc取数,并且支持to_dataframe()
可以用于loc中cube.data过滤条件
可以用loc赋值,但只能赋字符串类型常量
可以用clear清数
可以用submit_calc写回财务模型
文本类型科目不适用的场景如下:
作为来源集参与运算
使用assign_dataframe写回
使用计算函数
上卷汇总计算
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)
回到顶部
咨询热线