返回指定成员集合对应数值的平均值。
AVERAGE(Set_Expression, [ Distinct_flags ])
Set_Expression -> 数据类型:{Member} 成员集合。 Distinct_flags -> 数据类型:关键字 可选,成员是否去重标志,包含如下选项:
标志 |
描述 |
---|---|
True |
去重,成员集合表达式中如果有重复的成员,会去掉重复成员后求平均值。如果不指定Distinct_flags,默认为True |
False |
不去重。 |
返回值数据类型: Number
AVERAGE函数用于计算公式中,返回指定成员集合对应数值的平均值。
如下例子表达的计算是,将Total_Amount科目下所有末级科目求平均值,并赋值到科目成员Avg_Amount上:
Scope([Scenario].[Budget], [Version].[V1], [Year].[2022],Base([Period].[TotalPeriod]));
[Account].[Avg_Amount] = AVERAGE(Base([Account].[Total_Amount]));
End Scope;
AVERAGE函数默认会去重,例如下面例子,集合{[Entity].[A],[Entity].[A],[Entity].[B]}包含了两个[Entity].[A],如果去重标识为True,或者未指定去重标识,则会按照去重后的集合求平均值, 计算逻辑为 ( [Entity].[A] + [Entity].[B] ) / 2:
Scope([Scenario].[Budget], [Version].[V1], [Year].[2022],MemberSet([Account].[Total]),[View].[Periodic], Base([Period].[TotalPeriod]));
[Entity].[Region] = AVERAGE({[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] = AVERAGE({[Entity].[A],[Entity].[B]});
End Scope;
但如果指定去重标识为False,则不会去重。 如下例子计算逻辑为 ( [Entity].[A] + [Entity].[A] + [Entity].[B] ) / 3。
Scope([Scenario].[Budget], [Version].[V1], [Year].[2022],MemberSet([Account].[Total]),[View].[Periodic], Base([Period].[TotalPeriod]));
[Entity].[Region] = AVERAGE({[Entity].[A],[Entity].[A],[Entity].[B]},False);
End Scope;
在计算过程中,难免会出现维度组合对应的值为空的情况,AVERAGE函数对于空值的处理是:空值不参与平均。 如下例,想要计算科目成员AC01,AC02,AC03的平均值。
Scope([Scenario].[Budget], [Version].[V1], [Year].[2022],[Entity].[A], [Period].[1]);
[Account].[AVG_AC] = AVERAGE({[Account].[AC01],[Account].[AC02],[Account].[AC03]});
End Scope;
如果财务模型数据如下,科目AC03在当前维度组合下没有数据,那么最终AVG_AC计算结果为 (100+200)/2=150。
Entity |
Year |
Period |
Scenario |
Version |
Account |
data |
---|---|---|---|---|---|---|
A |
2022 |
1 |
Budget |
V1 |
AC01 |
100 |
A |
2022 |
1 |
Budget |
V1 |
AC02 |
200 |
如果业务场景需要空值成员也参与平均,可以提前为空值成员赋0值,之后再平均,如下例子,最终AVG_AC计算结果为(100+200+0)/3=100。
Scope([Scenario].[Budget], [Version].[V1], [Year].[2022], [Period].[1],[Account].[AC01],[Account].[AC02],[Account].[AC03]);
[Entity].[A] = [Entity].[A] + 0;
End Scope;
Scope([Scenario].[Budget], [Version].[V1], [Year].[2022],[Entity].[A], [Period].[1]);
[Account].[AVG_AC] = AVERAGE({[Account].[AC01],[Account].[AC02],[Account].[AC03]});
End Scope;
注: 1,如果计算列为多版本实体维,则会按照实体激活表过滤,无效成员不参与平均。 2,列作用值类的转换逻辑特殊,使用AVERAGE函数可能引起歧义,因此列作用有值类的财务模型不支持使用AVERAGE函数。
回到顶部
咨询热线