Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Um valor vazio indica que um membro, tupla ou célula específico está vazio. Um valor de célula vazia indica ou que os dados da célula especificada não podem ser encontrados na tabela de fatos subjacente, ou que a tupla da célula especificada representa uma combinação de membros que não é aplicável ao cubo.
Note
Embora um valor vazio seja diferente de zero, um valor vazio é normalmente tratado como zero na maioria das vezes.
A consulta a seguir ilustra o comportamento de valores vazios e zero:
WITH
//A calculated Product Category that always returns 0
MEMBER [Product].[Category].[All Products].ReturnZero AS 0
//Will return true for any null value
MEMBER MEASURES.ISEMPTYDemo AS ISEMPTY([Measures].[Internet Tax Amount])
//Will true for any null or zero value
//To be clear: the expression 0=null always returns true in MDX
MEMBER MEASURES.IsZero AS [Measures].[Internet Tax Amount]=0
SELECT
{[Measures].[Internet Tax Amount],MEASURES.ISEMPTYDemo,MEASURES.IsZero}
ON COLUMNS,
[Product].[Category].[Category].ALLMEMBERS
ON ROWS
FROM [Adventure Works]
WHERE([Date].[Calendar].[Calendar Year].&[2001])
As seguintes informações se aplicam a valores vazios:
A função IsEmpty retorna TRUE se e somente se a célula identificada pela tupla especificada na função estiver vazia. Caso contrário, a função retorna FALSE.
Note
A função IsEmpty não pode determinar se uma expressão membro retorna um valor nulo. Para determinar se um membro nulo é retornado de uma expressão, use o operador IS .
Quando o valor da célula vazia é um operando para qualquer um dos operadores numéricos (+, -, *, /), o valor da célula vazia é tratado como zero se o outro operando for um valor não vazio. Se ambos os operandos estiverem vazios, o operador numérico retorna o valor da célula vazia.
Quando o valor da célula vazia é um operando para o operador de concatenação de cadeias (+), o valor da célula vazia é tratado como uma cadeia vazia se o outro operando for um valor não vazio. Se ambos os operandos estiverem vazios, o operador de concatenação de cadeias retorna o valor da célula vazia.
Quando o valor da célula vazia é um operando para qualquer um dos operadores de comparação (=. <>, >=, <=, >, , <), o valor da célula vazia é tratado como zero ou uma cadeia vazia, dependendo se o tipo de dado do outro operando é numérico ou cadeia, respectivamente. Se ambos os operandos estiverem vazios, ambos são tratados como zero.
Ao compilar valores numéricos, o valor da célula vazia é colocado no mesmo lugar que zero. Entre o valor da célula vazia e zero, vazio se colou antes de zero.
Ao colacionar valores de cadeia, o valor da célula vazia é colocado no mesmo lugar que a cadeia vazia. Entre o valor da célula vazia e a cadeia vazia, vazia se colata antes de uma cadeia vazia.
Lidando com valores vazios em instruções e cubos MDX
Em instruções de Expressões Multidimensionais (MDX), você pode procurar valores vazios e então realizar certos cálculos em células com dados válidos (ou seja, não vazios). Eliminar valores vazios ao realizar cálculos pode ser importante porque certos cálculos, como uma média, podem ser imprecisos se valores de células vazias forem incluídos.
Se valores vazios estiverem armazenados nos dados subjacentes da sua tabela de fatos, por padrão eles serão convertidos em zeros quando o cubo for processado. Você pode usar a opção Processamento Nulo em uma medida para controlar se fatos nulos são convertidos em 0, convertidos em um valor vazio ou até mesmo geram um erro durante o processamento. Se você não quiser que valores de células vazios apareçam nos resultados da sua consulta, deve criar consultas, membros calculados ou instruções do MDX Script que eliminem os valores vazios ou os substituam por outro valor.
Para remover linhas ou colunas vazias de uma consulta, você pode usar a instrução NON EMPTY antes da definição do conjunto de eixos. Por exemplo, a consulta a seguir retorna apenas a Categoria de Produto Bicicletas porque essa é a única Categoria vendida no Ano Civil de 2001:
SELECT
{[Measures].[Internet Tax Amount]}
ON COLUMNS,
//Comment out the following line to display all the empty rows for other Categories
NON EMPTY
[Product].[Category].[Category].MEMBERS
ON ROWS
FROM [Adventure Works]
WHERE([Date].[Calendar].[Calendar Year].&[2001])
Mais geralmente, para remover tuplas vazias de um conjunto, você pode usar a função Não Vazio. A consulta a seguir mostra duas medidas calculadas, uma das quais conta o número de Categorias de Produtos e a segunda mostra o número de Categorias de Produtos que possuem valores para a medida [Valor do Imposto sobre Internet] e para o Ano Civil de 2001:
WITH
MEMBER MEASURES.CategoryCount AS
COUNT([Product].[Category].[Category].MEMBERS)
MEMBER MEASURES.NonEmptyCategoryCountFor2001 AS
COUNT(
NONEMPTY(
[Product].[Category].[Category].MEMBERS
,([Date].[Calendar].[Calendar Year].&[2001], [Measures].[Internet Tax Amount])
))
SELECT
{MEASURES.CategoryCount,MEASURES.NonEmptyCategoryCountFor2001 }
ON COLUMNS
FROM [Adventure Works]
Para mais informações, veja NonEmpty (MDX).
Valores vazios e operadores de comparação
Quando valores vazios estão presentes nos dados, operadores lógicos e de comparação podem potencialmente retornar um terceiro resultado de VAZIO em vez de apenas VERDADEIRO ou FALSO. Essa necessidade de lógica com valor três é uma fonte de muitos erros de aplicativo. Essas tabelas descrevem o efeito da introdução de comparações de valores vazios.
Esta tabela mostra os resultados da aplicação de um operador AND a dois operandos booleanos.
| AND | VERDADEIRO | EMPTY | FALSE |
|---|---|---|---|
| VERDADEIRO | VERDADEIRO | FALSE | FALSE |
| VAZIO | FALSE | EMPTY | FALSE |
| FALSO | FALSE | FALSE | FALSE |
Esta tabela mostra os resultados da aplicação de um operador OR a dois operandos booleanos.
| OR | VERDADEIRO | FALSE |
|---|---|---|
| VERDADEIRO | VERDADEIRO | VERDADEIRO |
| VAZIO | VERDADEIRO | VERDADEIRO |
| FALSO | VERDADEIRO | FALSE |
Esta tabela mostra como o operador NOT nega, ou reverte, o resultado de um operador booleano.
| Expressão booleana à qual o operador NOT é aplicado | Avaliada como |
|---|---|
| VERDADEIRO | FALSE |
| EMPTY | EMPTY |
| FALSE | VERDADEIRO |