全部文档
文档中心财务模型多维表达式MDXMDX函数计算函数AVERAGE函数

AVERAGE函数

返回指定成员集合对应数值的平均值。

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函数。

回到顶部

咨询热线

400-821-9199

我们使用 ChatGPT,基于文档中心的内容以及对话上下文回答您的问题。

ctrl+Enter to send