使用空值
空值指明特定的成员、元组或单元是空的。空单元值指明在基础事实表中找不到指定单元的数据,或者指定单元的元组代表不适用于多维数据集的成员组合。
注意: |
---|
虽然空值有别于零值,但是通常大多数情况下都将空值作为零处理。 |
以下信息适用于空值:
- 当且仅当由函数中指定的元组标识的单元为空时,IsEmpty 函数才返回 TRUE。否则,此函数将返回 FALSE。
注意: IsEmpty 函数不能确定某个成员是否为空。若要确定某个成员是否为空,请使用 IS 运算符。 - 当空单元值是数字运算符(+、-、*、/)中任一运算符的一个操作数时,如果另一个操作数是非空值,空单元值将被作为零处理。如果两个操作数都为空,数字运算符将返回空单元值。
- 当空单元值是字符串串联运算符 (+) 的一个操作数时,如果另一个操作数是非空值,空单元值将被作为空字符串处理。如果两个操作数都为空,字符串串联运算符将返回空单元值。
- 当空单元值是比较运算符(=.<>、>=、<=、>、<)中任一运算符的操作数时,根据另一个操作数的数据类型是数字还是字符串,分别将空单元值作为零或空字符串处理。如果两个操作数都为空,则两个操作数均作为零处理。
- 当对数字值进行排序时,空单元值排在与零相同的位置。在空单元值和零之间,空单元值排在零之前。
- 当对字符串值进行排序时,空单元值排在与空字符串相同的位置。在空单元值和空字符串之间,空单元值排在空字符串之前。
处理 MDX 语句和多维数据集中的空值
在多维表达式 (MDX) 语句中,可以查找空值,然后对包含有效(即不为空)数据的单元进行某些运算。进行运算时消除空值很重要,因为如果包含空单元值,某些运算(如平均值)可能不准确。
如果空值可能存储在基础事实表数据中,而您不希望空单元值出现在多维数据集中,则应创建消除空值或将空值合并到其他某些值中的查询和数据修改语句。此外,可以使用度量值的**“空值处理”**选项来修改空事实,以便将空事实转换为 0、转换为空值或者在处理过程中引发错误。
空值和比较运算符
如果数据中存在空值,逻辑运算符和比较运算符有可能返回 TRUE 或 FALSE 以外的第三种结果 EMPTY。这种对三值逻辑的需要是导致许多应用程序出错的根源。下面这些表概括了引入空值比较的影响。
下表显示了对两个布尔操作数应用 AND 运算符的结果。
AND | TRUE | EMPTY | FALSE |
---|---|---|---|
TRUE |
TRUE |
FALSE |
FALSE |
EMPTY |
FALSE |
EMPTY |
FALSE |
FALSE |
FALSE |
FALSE |
FALSE |
下表显示了对两个布尔操作数应用 OR 运算符的结果。
OR | TRUE | FALSE |
---|---|---|
TRUE |
TRUE |
TRUE |
EMPTY |
TRUE |
TRUE |
FALSE |
TRUE |
FALSE |
下表显示了 NOT 运算符如何求反或反转布尔运算符的结果。
应用了 NOT 运算符的布尔表达式 | 计算结果 |
---|---|
TRUE |
FALSE |
EMPTY |
EMPTY |
FALSE |
TRUE |
请参阅
参考
MDX 函数参考 (MDX)
MDX 运算符参考 (MDX)
概念
其他资源
定义和配置维度用法和维度关系
第 5 课:定义维度和度量值组之间的关系