多版本实体类维度常用于组织架构会随时间变更的业务场景。
多版本实体维的创建与普通维度一样,使用平台的创建元素入口,在维度类型选择时,选择实体类 > 多版本实体维度。
设置中的基础模块与实体维一致。但多版本实体维需要额外配置版本管理模块。目前多版本管理可在年,期间,场景,版本四种维度中任选0-4种进行管理。 大部分场景选择年,期间作为管控维度已经足够。如果业务场景更复杂,也可以选择版本,场景维度加入,这样同一个时间在不同的版本或场景下也可以有不同的组织架构。
管控维度选好后,用户可以按照开启的几个管控维度的每个成员组合维护不同的组织架构。
管控维度配好之后,需要配置实体激活表默认有效性。此配置会影响在查询维度成员有效性时,对实体激活表中未做配置的节点默认的有效性。对于组织变化不太大的场景,默认有效可以减少很多配置量。
管控维和默认有效性配置完成后,用户接下来可以在实体激活配置中指定每个维度成员的有效性。
这里我们以默认有效来举例。
例如我们的需求是:B公司原本在A公司下,但是2024年1月份B公司调整到C公司下。
首先我们需要将所有公司在全部时间线上的层级架构都体现在维度成员上。也就是说维度成员的组织架构是所有版本下组织架构的并集:
然后我们配置实体激活表,将2022-2023中B->C的有效性设置为N,2024中B->A的有效性设置为N。(假设年维度只有2022-2024年)
多版本实体维的维度表达式与其他维度的表达式最大的不同在于有效性过滤。
我们知道,维度表达式有两种基本单元
维度成员名
维度表达式函数
多版本实体维的维度成员名分为父点子成员名和纯子成员名两种类型:
父点子成员名 例如 [A].[B]表示A节点的子级B节点(因为维度成员name本身支持“.”点符号,所以在使用父.子结构时,父和子成员需要各套一层中括号[]以做区分)
纯子成员名 例如 B
只有父点子成员名会过滤有效性,纯子成员名被固定认为是有效的。(因为有效性是建立在一个节点和其父级节点的关系上的,脱离了父子关系,单独看任何一个节点本身,在业务含义上其一定有效。)
多版本实体维的维度表达式函数比起其他维度的函数也多一个有效性过滤参数。
例如表示已知维度成员的所有后代的Descendant函数,其他维度的函数定义为:Descendant(维度成员名,排序方式(0/1))
而多版本实体维的函数定义为:Descendant(维度成员名,排序方式(0/1),有效性过滤参数(0/1/2))
有效性过滤参数的入参定义如下:
0:否,不过滤有效性,即不论成员是否有效均能查询到;
1:是,过滤有效性,并返回父点子结构成员;
2:是,过滤有效性,并返回纯子结构成员。
该参数非必传,默认为0。该参数仅对多版本实体维生效。
对于有效性过滤参数,指定为1时,返回父点子结构成员,常用于合并报表项目,其在报表上呈现效果如下:
而有效性过滤参数指定为2时,返回的成员名结构为纯子结构,适合非合并报表项目,其在报表上呈现效果如下:
有效性过滤参数1和2仅影响展现层展示的成员编码,两者的过滤逻辑完全一致。
需要注意的是,对于多版本实体维的过滤逻辑,如果表达式查询结果范围内的一个父级节点无效,则该节点的后代都认为无效。
同时,节点有效性也与表达式函数的语义有关,无效传递只从表达式函数第一个参数指定的节点向下传递,不追溯该节点先祖节点的有效性。因此同一个节点的有效性会因为表达式函数的起点不同而产生不同的结果。
例如有如下维度结构:
假设实体激活表中已经配置了2024年10月,B节点在A节点下无效,在C节点下有效,其他节点均有效。
那么在查询该月的维度表达式时,如果查A节点的后代,则B1,B2会连带无效,如果查B节点的后代,则认为B1,B2有效。
维度表达式 |
查询结果 |
---|---|
IDescendant(A,0,2) |
A |
IDescendant(C,0,2) |
C,B,B1,B2 |
IDescendant(B,0,2) |
B,B1,B2 |
在配置项“维度表达式默认场景”中,用户可以选择配置“纯子结构”或“父点子结构”。
当用户在电子表格和UX等展现层组件的编辑视图中使用维度筛选器时,从筛选器选择维度维度函数或单个维度成员的结果受此配置影响。(仅影响默认生成的表达式,选定后用户仍可手动修改表达式)
纯子结构 |
父点子结构 | |
---|---|---|
选择函数 |
函数第一个参数为纯子结构,第三个参数为2 |
函数第一个参数为父点子结构,第三个参数为1 |
选择单成员 |
纯子结构 |
父点子结构 |
回到顶部
咨询热线