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.