Como Ignorar Tuplas para Otimizar Cálculos Personalizados

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:

  1. Observe a tupla ([TotalExpense], [NetBalance]).

  2. 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.

  3. 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.