MDX AVG 函数用于计算指定集合中非空成员的平均值。它类似于 SQL AVG 函数。MDX 平均值函数在计算平均值时会忽略 NULL 值。
MDX AVG 函数语法
多维表达式中 AVG 函数的基本语法如下所示
AVG ( Set_Expression, Numeric_Expression)
- Set_Expression:返回有效集合的任何多维表达式。
- Numeric_Expression:返回数值的任何多维表达式。通常,我们在此处使用所需的度量值。
如何使用 AVG 函数和示例计算平均值?为此,我们将使用下面显示的数据。

下面的截图显示了地理位置中的国家/地区

MDX AVG 函数示例 1
以下查询将返回“国家/地区”中所有国家/地区的经销商销售额,并使用 AVG 函数计算其销售额的平均值。
WITH MEMBER
[Geography].[Geography].[Average] AS
AVG (
[Geography].[Geography].[Country],
[Measures].[Reseller Sales Amount]
)
SELECT
[Measures].[Reseller Sales Amount] ON COLUMNS,
{
[Geography].[Geography].[Country],
[Geography].[Geography].[Average]
} ON ROWS
FROM [Adventure Works]
下面的 MDX 语句将创建计算成员 [Geography].[Geography].[Average]
WITH MEMBER [Geography].[Geography].[Average]
在下一行中,我们使用 AVG 函数计算 [Geography].[Geography].[Country] 中国家/地区的 [Measures].[Reseller Sales Amount] 的平均值。
AVG (
[Geography].[Geography].[Country],
[Measures].[Reseller Sales Amount]
)
在下一条语句中,我们在列中选择了经销商销售额,然后在行中选择了国家/地区集合和计算成员。
SELECT
[Measures].[Reseller Sales Amount] ON COLUMNS,
{
[Geography].[Geography].[Country],
[Geography].[Geography].[Average]
} ON ROWS
MDX AVG 函数示例 2
以下查询将返回日期维度中所有日历年的互联网销售额。并使用 MDX AVG 函数计算其销售额的平均值。
WITH MEMBER [Date].[Calendar].[Average] AS
AVG (
[Date].[Calendar].[Calendar Year],
[Measures].[Internet Sales Amount]
)
SELECT [Measures].[Internet Sales Amount] ON COLUMNS,
NON EMPTY {
[Date].[Calendar].[Calendar Year],
[Date].[Calendar].[Average]
} ON ROWS
FROM [Adventure Works]

以下语句将创建计算成员 [Date].[Calendar].[Average]
WITH MEMBER [Date].[Calendar].[Average]
在下一行中,我们使用 AVG 函数计算 [Date].[Calendar].[Calendar Year] 中的日历年的 [Measures].[Internet Sales Amount] 的平均值。
AVG (
[Date].[Calendar].[Calendar Year],
[Measures].[Internet Sales Amount]
)
在下一条语句中,我们在列中选择了互联网销售额,然后在行中选择了日历年集合和计算成员([Date].[Calendar].[Average])。我们还使用了 NON EMPTY 函数来避免 NULL 值。
SELECT [Measures].[Internet Sales Amount] ON COLUMNS,
NON EMPTY {
[Date].[Calendar].[Calendar Year],
[Date].[Calendar].[Average]
} ON ROWS
FROM [Adventure Works]
MDX AVG 函数示例 3
在此示例中,我们将向您展示当有 NULL 值时会发生什么。为此,我们在没有 NON EMPTY 函数的情况下使用上面的 MDX 查询。
WITH MEMBER [Date].[Calendar].[Average] AS
AVG (
[Date].[Calendar].[Calendar Year],
[Measures].[Internet Sales Amount]
)
SELECT [Measures].[Internet Sales Amount] ON COLUMNS,
{
[Date].[Calendar].[Calendar Year],
[Date].[Calendar].[Average]
} ON ROWS
FROM [Adventure Works]

如果观察结果,我们会得到相同的平均值,例如 2 和 3。这是因为 AVG 函数不考虑具有 NULL 值的成员。这意味着 AVG 函数正在计算从 CY 2010 到 CY 2014 的平均值。

评论已关闭。