MDX NONEMPTY 函数用于显示值不为 Null 的记录。例如,当按国家或年份显示最低销售额时,您可能会发现 NULL 值。在高层数据中看到 NULL 值并不令人愉快。为了删除 NULL 值,我们可以使用此 NONEMPTY 函数,并将第二个参数设置为 Sales。
MDX NonEmpty 函数语法
NonEmpty 的基本语法是
NONEMPTY( Set_Expression, Measure )
- Set_Expression: 任何返回有效集合的多维表达式。
- Measure: 任何返回数值的多维成员。NONEMPTY 函数将根据此值进行检查,以查找非空或非 NULL 记录。
对于这个 MDX NONEMPTY 函数示例,我们将使用以下显示数据

MDX NonEmpty 函数示例
在此示例中,我们将使用 NonEmpty 函数查找 Internet Sales Amount 不为 Null 的日历年。
SELECT
{ [Measures].[Reseller Sales Amount],
[Measures].[Internet Sales Amount]
} ON COLUMNS,
NONEMPTY (
[Date].[Calendar].[Calendar Year].ALLMEMBERS,
[Measures].[Internet Sales Amount]
)ON ROWS
FROM [Adventure Works]

在下面的 MDX 查询中,我们在列中使用 [Reseller Sales amount] 和 [Internet Sales amount]。
{
[Measures].[Reseller Sales Amount],
[Measures].[Internet Sales Amount]
} ON COLUMNS
NONEMPTY(第一个参数)之后的第一个代码行将返回 [Date].[Calendar].[Calendar Year] 中存在的所有成员。这意味着第一行代码将引入 Date Dimension 中的所有日历年(2005 年至 2014 年)。
[Date].[Calendar].[Calendar Year].ALLMEMBERS
接下来,我们将 [Internet Sales Amount] 分配给 MDX NonEmpty 函数的第二个参数。这意味着下面的代码行将检查第一个参数返回的每个日历年的 Internet Sales Amount。
- 如果日历年没有 Internet Sales,那么 NonEmpty 函数将不会返回相应的行。如果您观察第一张图片,从 2005 年到 2009 年的日历年没有 Internet sales。
- 如果日历年有 Internet Sales,那么 NonEmpty 函数将返回相应的行。
NONEMPTY (
[Date].[Calendar].[Calendar Year].ALLMEMBERS,
[Measures].[Internet Sales Amount]
)ON ROWS
MDX NonEmpty 函数示例 2
在此示例中,我们将使用上面的示例,但会更改 NonEmpty 函数的第二个参数。请务必小心分配 NonEmpty 函数的第二个参数。如果您将错误的度量作为第二个参数,您将得到错误的结果。
SELECT
{ [Measures].[Reseller Sales Amount],
[Measures].[Internet Sales Amount]
} ON COLUMNS,
NONEMPTY (
[Date].[Calendar].[Calendar Year].ALLMEMBERS,
[Measures].[Reseller Sales Amount]
)ON ROWS
FROM [Adventure Works]

如果您观察下面的 MDX Nonempty 查询,我们将 [Reseller Sales Amount] 分配给 NonEmpty 函数的第二个参数。这意味着下面的代码行将检查第一个参数返回的每个日历年的 Reseller Sales Amount。
- 如果日历年没有 Reseller Sales,那么 NonEmpty 函数将不会返回相应的行。如果您观察第一张图片,从 2005 年到 2009 年以及 2014 年的日历年没有 Reseller sales。
- 如果日历年有 Reseller Sales,那么 NonEmpty 函数将返回相应的行。
NONEMPTY (
[Date].[Calendar].[Calendar Year].ALLMEMBERS,
[Measures].[Reseller Sales Amount]
)ON ROWS