返回指定成员集合对应数值的和。
SUM(Set_Expression, [ Distinct_flags ])
Set_Expression -> 数据类型:{Member} 成员集合。 Distinct_flags -> 数据类型:关键字 可选,成员是否去重标志,包含如下选项:
标志 |
描述 |
---|---|
True |
去重,成员集合表达式中如果有重复的成员,会去掉重复成员后求和。如果不指定Distinct_flags,默认为True |
False |
不去重。 |
返回值数据类型: Number
SUM函数用于计算公式中,返回指定成员集合对应数值的和。
如下例子是将科目成员Indicators下所有末级指标科目求和,计算至科目成员SumIndicators上(这种场景通常是因为指标类型的科目成员会勾选“允许在父级节点输入”,此时指标科目的比重会被指定为0):
Scope([Scenario].[Budget], [Version].[V1], [Year].[2022],Base([Period].[TotalPeriod]),[View].[Periodic]);
[Account].[SumIndicators] = SUM(Base([Account].[Indicators]));
End Scope;
如果需要在SUM函数中跨维度计算,与单个成员跨维度计算时的用法一样,可以使用->来表示。 如下例子是一个开启了累计数计算的财务模型,数据录入类型为当期发生额的资产负债类科目年末结转场景,将2021年的所有叶子节点的期间(1-12月)求和,再加上2021年的年初数,计算到2022年的年初数:
Scope([Scenario].[Budget], [Version].[V1], [Year].[2022],MemberSet([Account].[Total]),[View].[Periodic]);
[Period].[Beginning] = SUM(Base([Period].[TotalPeriod])->[Year].[2021]) + [Period].[Beginning])->[Year].[2021];
End Scope;
因为SUM函数的入参是一个集合,因此也可以显示的传入一个集合:
Scope([Scenario].[Budget], [Version].[V1], [Year].[2022],MemberSet([Account].[Total]),[View].[Periodic], Base([Period].[TotalPeriod]));
[Entity].[Region] = SUM({[Entity].[A],[Entity].[B],[Entity].[C]});
End Scope;
在计算公式中,集合表达式也可以用箭头指向另一个维度。 计算公式 [Entity].[Region] = SUM({[Entity].[A],[Entity].[B],[Entity].[C]}->[Year].[2021]); 等价于 [Entity].[Region] = [Entity].[A]->[Year].[2021]+[Entity].[B]->[Year].[2021]+[Entity].[C]->[Year].[2021];
SUM函数默认会去重,例如下面例子,集合{[Entity].[A],[Entity].[A],[Entity].[B]}包含了两个[Entity].[A],如果去重标识为True,或者未指定去重标识,则会按照去重后的集合求和{[Entity].[A],[Entity].[B]}
Scope([Scenario].[Budget], [Version].[V1], [Year].[2022],MemberSet([Account].[Total]),[View].[Periodic], Base([Period].[TotalPeriod]));
[Entity].[Region] = SUM({[Entity].[A],[Entity].[A],[Entity].[B]});
End Scope;
等价于
Scope([Scenario].[Budget], [Version].[V1], [Year].[2022],MemberSet([Account].[Total]),[View].[Periodic], Base([Period].[TotalPeriod]));
[Entity].[Region] = SUM({[Entity].[A],[Entity].[B]});
End Scope;
但如果指定去重标识为False,则不会去重,如下例子在加总时会计算两遍[Entity].[A]的值。
Scope([Scenario].[Budget], [Version].[V1], [Year].[2022],MemberSet([Account].[Total]),[View].[Periodic], Base([Period].[TotalPeriod]));
[Entity].[Region] = SUM({[Entity].[A],[Entity].[A],[Entity].[B]},False);
End Scope;
注:
如果计算列为多版本实体维,则会按照实体激活表过滤,无效成员不参与加总。
列作用值类的转换逻辑特殊,使用SUM函数可能引起歧义,因此列作用有值类的财务模型不支持使用SUM函数。
回到顶部
咨询热线