先胜云平台的核心模块之一的多维计算引擎,具有一个重要的功能,即在从内存财务模型中读取数据的同时,实时的进行数据的多维汇总计算。多维汇总计算的逻辑会受到很多设置的影响。本篇文章将一一阐述。
在创建内存财务模型的时候,对设置为维度类型的字段,需要先指定该字段的 列作用 类型。字段的 列作用 类型同维度类型大部分相同,分为实体类、场景类、版本类、年份类、期间类、科目类、通用类、交易伙伴类、值类。
当一个字段的 列作用 被设置为 通用类/科目类/值类 时,不管其关联的维度是什么类型,在读取这个字段上的父级节点维度数据时,会自动将其下属的维度成员上的数据根据比重汇总起来作为父节点的数据。但如果满足以下两种情况的任意一个,通用类/值类 字段的父级维度成员上的数据不是通过其下属汇总上来的,而是直接从表中读取的(即该数据是直接存储在汇总节点的维度成员上):
数据的 Version 维度成员的 自上而下 属性被勾选;
数据的 Account 维度成员的 允许在父级节点输入 属性被勾选。
在从内存财务模型中读取数据时,关于数据是需要做自动汇总还是直接从数据表中读取,会遵从以下优先级规则:
如果数据的科目类维度成员的数据类型是非数字类型,则直接从数据表中读取。
如果数据关联的版本类维度成员的 自上而下 的属性为 True(即在版本类维度的属性中,将 自上而下 复选框勾选上),或者数据的科目类维度成员的 允许在父级节点输入 的属性为 True(即在科目类维度的属性中,将 允许在父级节点输入 复选框勾选上),则直接从数据表中读取。
如果数据的通用类、值类和科目类字段上的成员是其维度结构中最底层的成员,则直接从数据表中读取。
如果数据的通用类或科目类或值类字段上的成员是其维度结构中的父级节点,则通过其后代成员的比重进行逐级的汇总计算,得到该父级节点的数据。
当内存财务模型启用了 自动进行当期数和累计数的汇总计算 属性后,模型中会自动添加一个虚拟的维度 View(视图)维度。View (视图) 维度不会对应任何数据表上的字段,但针对开启了 自动进行当期数和累计数的汇总计算 属性的内存财务模型的任何取数逻辑都会需要用到该维度,比如搭建多维透视表或者通过 Python 脚本进行多维计算时,都会需要传入 View 维度的表达式。
View 维度成员作为 Period - 期间维度的一个属性出现,它的成员分固定成员和非固定成员。固定成员是始终存在的,非固定成员是由 Period 维度开启了层级管理之后自动创建出来的。View 的成员同 Period 维度的层级基本是一一对应的关系。在 Period 维度编辑页面 > 编辑期间层级 中开启了 Period 维度层级,就会创建出对应的 View 属性的成员。下表中展示了完整的 View 成员,以及同 Period 层级的对应关系:
.. list-table:: :widths: auto :header-rows: 1
View 维度成员
成员描述
固定/非固定成员
对应的 Period 维度层级
Beginning
年初数
固定
\
Opening
期初数
固定
\
Periodic
当期发生数
固定
\
YTD
年累计发生数
非固定
年
HYTD
半年累计发生数
非固定
半年
QTD
季度累计发生数
非固定
季度
MTD
月累计发生数
非固定
月
WTD
周累计发生数
非固定
周
DTD
日累计发生数
非固定
日
Closing
期末数
固定
月
启用 自动进行当期数和累计数的汇总计算 属性后,内存财务模型的取值算法除了受维度类型和维度成员属性影响之外,还受到以下几个因素的的影响:
内存财务模型属性:资产负债类科目存储,损益类科目存储 所选择的值(当期发生额,累计余额)。
科目属性:其中资产负债类的科目类型包括资产,负债,权益;损益类的科目类型包括费用,收入。
录入数据时所选择的 View 维度的成员。
对于一个开启了 自动进行当期数和累计数的汇总计算 属性的内存财务模型,基于该模型创建的多维透视表在录入数据时存在一些限制:
所有 View 成员为期初数(Opening)对应的单元格都为只读。
若科目存储为当期发生额:
以日作为期间最小层级:多维透视表中只有 View 成员为年初数(Beginning)、当期发生额(Periodic)、日累计发生数(DTD)的单元格可写;
以月作为期间最小层级:多维透视表中只有 View 成员为年初数(Beginning)、当期发生额(Periodic)、月累计发生数(MTD)的单元格可写;
…
以年作为期间最小层级:多维透视表中只有 View 成员为年初数(Beginning)、当期发生额(Periodic)、年累计发生数(YTD)的单元格可写;
若科目存储为累计余额:多维透视表中只有 View 成员为年初数(Beginning)、期末数(Closing)的单元格可写;
其他限制:损益类科目无论存储当期发生额还是累计余额,均不允许编辑 View 成员为年初数(Beginning)、期初数(Opening)的单元格。
假设内存财务模型开启了 自动进行当期数和累计数的汇总计算 属性,且以 月 作为最小期间层级。
多维透视表录入数据:对于资产负债类科目,View 为年初数(Beginning)时,Period 对应的单元格都可写,但必须保证每个期间填的值一样,否则随机取值保存。
期间(Period) | ||||||
---|---|---|---|---|---|---|
科目(Account) |
View |
年初数(Beginning) |
1 |
2 |
3 |
… |
资产负债类 |
年初数(Beginning) |
100 |
100 |
100 |
100 |
100 |
损益类 |
年初数(Beginning) |
不可写 |
不可写 |
不可写 |
不可写 |
不可写 |
多维透视表录入数据:View 为当期发生额(Periodic)和最小期间层级对应的累计发生额的单元格可写(如:最小层级为周,则周累计发生数(WTD)可写;最小层级为月,则月累计发生数(MTD)可写)。如果填写的月累计发生数(MTD)与当期发生数(Periodic)金额不一致,则随机取值保存;对于资产负债类科目,View 为年初数(Beginning)时,Period 对应的单元格都可写。
期间(Period) | ||||||
---|---|---|---|---|---|---|
科目(Account) |
View |
年初数(Beginning) |
1 |
2 |
3 |
… |
资产负债类 |
年初数(Beginning) |
100 |
100 |
100 |
100 |
100 |
期初数(Opening) |
不可写 |
不可写 |
不可写 |
不可写 |
不可写 | |
当期发生额(Periodic) |
不可写 |
10 |
20 |
30 |
40 | |
周累计发生数(WTD) |
不可写 |
不可写 |
不可写 |
不可写 |
不可写 | |
月累计发生数(MTD) |
不可写 |
10 |
20 |
30 |
40 | |
季度累计发生数(QTD) |
不可写 |
不可写 |
不可写 |
不可写 |
不可写 | |
年累计发生数(YTD) |
不可写 |
不可写 |
不可写 |
不可写 |
不可写 | |
期末数(Closing) |
不可写 |
不可写 |
不可写 |
不可写 |
不可写 | |
损益类 |
年初数(Beginning) |
不可写 |
不可写 |
不可写 |
不可写 |
不可写 |
期初数(Opening) |
不可写 |
不可写 |
不可写 |
不可写 |
不可写 | |
当期发生额(Periodic) |
不可写 |
100 |
200 |
300 |
400 | |
周累计发生数(WTD) |
不可写 |
不可写 |
不可写 |
不可写 |
不可写 | |
月累计发生数(MTD) |
不可写 |
100 |
200 |
300 |
400 | |
季度累计发生数(QTD) |
不可写 |
不可写 |
不可写 |
不可写 |
不可写 | |
年累计发生数(YTD) |
不可写 |
不可写 |
不可写 |
不可写 |
不可写 | |
期末数(Closing) |
不可写 |
不可写 |
不可写 |
不可写 |
不可写 |
多维透视表录入数据:View 为 期末数(Closing)的单元格可写;对于资产负债类科目,View 为年初数(Beginning) 时,Period 对应的单元格都可写。
Period | ||||||
---|---|---|---|---|---|---|
Account |
View |
年初数(Beginning) |
1 |
2 |
3 |
… |
资产负债类 |
年初数(Beginning) |
100 |
100 |
100 |
100 |
100 |
期初数(Opening) |
不可写 |
不可写 |
不可写 |
不可写 |
不可写 | |
当期发生额(Periodic) |
不可写 |
不可写 |
不可写 |
不可写 |
不可写 | |
周累计发生数(WTD) |
不可写 |
不可写 |
不可写 |
不可写 |
不可写 | |
月累计发生数(MTD) |
不可写 |
不可写 |
不可写 |
不可写 |
不可写 | |
季度累计发生数(QTD) |
不可写 |
不可写 |
不可写 |
不可写 |
不可写 | |
年累计发生数(YTD) |
不可写 |
不可写 |
不可写 |
不可写 |
不可写 | |
期末数(Closing) |
不可写 |
110 |
130 |
160 |
200 | |
损益类 |
年初数(Beginning) |
不可写 |
不可写 |
不可写 |
不可写 |
不可写 |
期初数(Opening) |
不可写 |
不可写 |
不可写 |
不可写 |
不可写 | |
当期发生额(Periodic) |
不可写 |
不可写 |
不可写 |
不可写 |
不可写 | |
周累计发生数(WTD) |
不可写 |
不可写 |
不可写 |
不可写 |
不可写 | |
月累计发生数(MTD) |
不可写 |
不可写 |
不可写 |
不可写 |
不可写 | |
季度累计发生数(QTD) |
不可写 |
不可写 |
不可写 |
不可写 |
不可写 | |
年累计发生数(YTD) |
不可写 |
不可写 |
不可写 |
不可写 |
不可写 | |
期末数(Closing) |
不可写 |
10 |
20 |
30 |
40 |
关于 view 的汇总逻辑请查看::download:启用“自动进行当期数和累计数的汇总计算”属性-计算逻辑 <static/summary_calculation_logic.xlsx>
(鼠标右键点击下载文件,选择 将链接另存为)
流程操作在 合并算法 组件中进行操作,具体操作详看合并算法组件的流程流转
根据关联的审批流状态以及控制权限设置的情况,当流程状态到达当前你拥有的最大流程,那么之后的流程状态时数据均为只读,不可修改。
比如你拥有审批动作,例如 提交、审批,若 A 用户对数据的权限配置为可写,当你提交流程后,数据仍然可写;当流程状态为 已审批,那么数据变为只读,不允许再修改数据,除非在 合并算法 组件里将流程状态回退。
如果你仅可对流程进行审批,那在审批流程之前数据是可写的,但当审批后,数据变为只读,不允许再修改数据。
回到顶部
咨询热线