获取财务模型对象后,我们需要从平台的财务模型加载数据到python内存里,才能在python中进行数据计算。
使用init_data()函数来加载财务模型数据,需要加载的数据范围是整个计算中等号右边用到的所有来源集数据和要清数的范围的并集。 但是往往清数的范围就是要计算的等号左边的范围,所以init_data()中传入的往往是所有等号左边和右边的范围总和。
在传参时,需要使用[]来将各个维度成员集合包括起来:
from deepcube.cube.cube import deepcube
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
# 直接在init_data时指定取数范围
cube1.init_data(
[year["2021"],
scenario["Actual"],
version["Working"],
period["YearTotal"].Base(),
product["TotalProduct"].Base()]
)
在实际场景中,要加载的数据块很可能是不连续的,此时可以在init_data中指定多组维度组合:
from deepcube.cube.cube import deepcube
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
# 加载多组数据
cube1.init_data(
[year["2021"],
scenario["Budget"],
version["Working"],
period["YearTotal"].Base(),
product["TotalProduct"].Base()],
[year["2020"],
scenario["Actual"],
version["Working"],
period["YearTotal"].Base(),
product["TotalProduct"].Base()]
)
建议一次计算只进行一次init_data。如果在一次执行中多次指定init_data,默认会进行全量覆盖操作,也就是说,当第二次使用init_data时,第一次init_data得到的数据会被清除。但是如果有特殊考虑需要多次init_data,并且不希望覆盖,可以在init_data时传入参数overwrite=False,此时数据将增量加载至python中。
from deepcube.cube.cube import deepcube
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
cube1.init_data(
[year["2021"],
scenario["Budget"],
version["Working"],
period["YearTotal"].Base(),
product["TotalProduct"].Base()]
)
# 多次加载数据,可以传参overwrite=False表示增量加载数据
cube1.init_data(
[year["2020"],
scenario["Actual"],
version["Working"],
period["YearTotal"].Base(),
product["TotalProduct"].Base()], overwrite=False
)
此外,如果不在init_data中指定范围,则会加载整个财务模型的所有数据。(尽量指定一个需要用到数据的准确范围,整个财务模型的数据通常会非常多!)
from deepcube.cube.cube import deepcube
def main():
# 实例一个deepcube对象,传参为cube元素名和path,如果cube元素名在应用中唯一,可以不传path
cube1 = deepcube('cube1')
# 谨慎使用!如果scope未指定范围,则会取财务模型的全部数据
cube1.init_data()
回到顶部
咨询热线