MDX NONEMPTY 函数

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 NONEMPTY FUNCTION

在下面的 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 FUNCTION

如果您观察下面的 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