Os conjuntos de dados podem ser muito esparsos. O cálculo de conjuntos de resultados vazios pode prejudicar consideravelmente o desempenho.
Para evitar conjuntos de resultados vazios, você pode usar a cláusula de propriedade NONEMPTYTUPLE nas fórmulas de cálculo personalizadas. O uso de NONEMPTYTUPLE restringe o local em que o sistema tenta calcular. Para configurar isso, você define uma tupla que só será calculada se não estiver vazia. Depois, define uma operação numérica simples para ser aplicada à tupla.
Sintaxe
Esta é a sintaxe para usar NONEMPTYTUPLE:
tuple := [NONEMPTYTUPLE (nonempty_member_list)] numeric_value_expression;
Onde:
tuple
-- Uma especificação MDX de um ou mais membros, em que nenhum dos dois membros pode ser da mesma dimensão
NONEMPTYTUPLE
-- Uma propriedade opcional que você pode usar para otimizar um desempenho de cálculo. Se essa opção for usada, você deverá usar nonempty_member_list
depois dessa propriedade literal.
nonempty_member_list
-- Um ou mais nomes de membros separados por vírgula de diferentes dimensões. Deve haver uma tupla em numeric_value_expression
.
numeric_value_expression
-- Uma expressão de valor numérico MDX simples, como um número ou uma operação aritmética
A expressão deve estar à direita da equação. Você só deve usar operadores aritméticos. Será retornado um erro se você usar operadores não aritméticos, como AND, OR ou IF.
Por exemplo:
[UnitCost] := NONEMPTYTUPLE ([TotalExpense], [NetBalance]) ([TotalExpense], [NetBalance]) / ([Units], [CostPool]);
Esse exemplo informa o seguinte:
Observe a tupla ([TotalExpense], [NetBalance])
.
Se essa tupla, ou a interseção, não estiver vazia (ou seja, contiver um valor real), execute a operação a seguir:
Considere a tupla ([TotalExpense], [NetBalance])
e divida-a pela tupla ([Units], [CostPool])
para chamar UnitCost
.
Se ela estiver vazia, ignore-a e calcule a instância seguinte.
Regras para Uso
Uma tupla é uma combinação de membros de algum conjunto de dimensões diferentes, por exemplo:
([product2], [account5], customer3])
([myactivity], [yourdepartment])
Estes são os requisitos para adicionar NONEMPTYTUPLE à fórmula das regras de cálculo personalizadas do Profitability and Cost Management, onde A, B e C representam tuplas:
Você só pode usar NONEMPTYTUPLE quando uma tupla tiver algum valor. Caso contrário, o resultado seria inesperado. Suponha o seguinte:
A=B+C
-- Você não pode usar NONEMPTYTUPLE em B
nem em C
. Se B
ou C
estiver faltando, o resultado será Nenhum, o que é incorreto.
Nota:
Para calcular A=B+C usando NONEMPTYTUPLE, utilize duas regras:
Regra 1: A=A+B
com NONEMPTYTUPLE em B
Regra 2: A=A+C
(ou A=A-C
) com NONEMPTYTUPLE em C
Neste caso, sempre que o valor de B
estiver presente, ele será adicionado a A
; e sempre que o valor de C
estiver presente, ele será adicionado a A
.
A=B-C
-- Você não pode usar NONEMPTYTUPLE em B
nem em C
. Se B
ou C
estiver ausente, o resultado será Nenhum, o que está incorreto (a menos que você use duas regras, conforme descrito anteriormente).
Você poderá usar NONEMPTYTUPLE quando o resultado for o mesmo se a tupla estiver ou não ausente. Suponha o seguinte:
A=B
-- Você pode usar NONEMPTYTUPLE em B
.
A=B*C
-- Você pode usar NONEMPTYTUPLE em B
ou C
.
A=B/C
-- Você pode usar NONEMPTYTUPLE em B
ou C
.
Nota:
Resumindo: você só pode usar NONEMPTYTUPLE com segurança em operações de multiplicação ou divisão. Para adição e subtração, você deve avaliar seu uso para cada caso separado a fim de evitar resultados inesperados.
Para obter mais informações sobre como escrever regras de cálculo personalizadas, consulte Sobre a Sintaxe da Fórmula de Regras de Cálculo Personalizado e os documentos mencionados aqui.