Calcular um Subconjunto de Dados no Cubo

Para evitar calcular mais do que o necessário, calcule um subconjunto de dados no banco de dados do Essbase. Você pode indicar subconjuntos usando qualquer combinação de funções de conjunto de membros, instruções FIX para especificar inclusões e instruções EXCLUDE para especificar exclusões.

Para calcular um subconjunto de dados no cubo, use um dos seguintes métodos:

  • Crie uma fórmula usando funções de conjunto de membros para calcular listas de membros.

  • Use os comandos FIX...ENDFIX para calcular um intervalo de valores por inclusão.

  • Use os comandos EXCLUDE...ENDEXCLUDE para calcular um intervalo de valores por exclusão.

Observação:

Quando o Cálculo Inteligente está ativado, os blocos de dados recém-calculados não são marcados como limpos após um cálculo parcial de um banco de dados. Ao calcular um subconjunto de um banco de dados, você pode usar o comando SET CLEARUPDATESTATUS AFTER para garantir que os blocos recém-calculados sejam marcados como limpos. O uso desse comando garante que o Essbase recalcule o banco de dados da forma mais eficiente possível usando o Cálculo Inteligente.

Calcular Listas de Membros

As funções de cálculo do conjunto de membros do Essbase geram uma lista de membros que se baseia em um membro especificado.

Por exemplo, a função @IDESCENDANTS gera uma lista de todos os descendentes de um membro especificado. Quando você usa uma função de conjunto de membros em uma fórmula, o Essbase gera uma lista de membros antes de calcular a fórmula.

No exemplo a seguir, o uso do comando @IDESCENDANTS no Total de Despesas do membro gera uma lista desses membros — Total de Despesas, ele mesmo e seus descendentes, que são Marketing, Folha de Pagamento e Diversos:

@IDESCENDANTS("Total Expenses");

Usar o Comando FIX

Use o comando FIX em scripts de cálculo de armazenamento em bloco do Essbase para definir quais membros incluir no cálculo. Os blocos FIX permitem otimizar o desempenho, evitando o excesso de cálculo. FIX também permite calcular partes separadas do cubo usando fórmulas diferentes.

Um bloco FIX no seu script de cálculo ajuda a definir segmentos de dados a serem incluídos no cálculo.

Por exemplo, o seguinte bloco FIX calcula somente os valores de Orçamento para apenas os descendentes de Leste (Nova York, Massachusetts, Flórida, Connecticut e New Hampshire):

FIX(Budget,@DESCENDANTS(East))
   CALC DIM(Year, Measures, Product);
ENDFIX

O exemplo a seguir corrige as combinações de membros para os filhos do Leste que têm um UDA de Novo Mercado:

FIX(@CHILDREN(East) AND @UDA(Market,"New Mkt"))
   Marketing = Marketing * 1.1;
ENDFIX

O exemplo a seguir usa uma correspondência curinga (???) para corrigir os nomes de membro que terminam nos caracteres -10, que são os membros 100-10, 200-10, 300-10 e 400-10:

FIX(@MATCH(Product, "???-10"))
   Price = Price * 1.1;
ENDFIX

Quando você usa o comando FIX apenas em uma dimensão densa, o Essbase recupera todo o bloco que contém o valor ou valores necessários para os membros que você especificar. E/S não é afetada e o tempo de desempenho do cálculo é melhorado.

Quando você usa o comando FIX em uma dimensão esparsa, o Essbase recupera o bloco para os membros de dimensão esparsa especificados. E/S pode ser muito reduzida.

O Essbase percorre o banco de dados uma vez para cada comando FIX que você usa em membros de dimensão densa. Quando possível, combine blocos FIX para melhorar o desempenho do cálculo.

Por exemplo, usando um comando FIX, o seguinte script de cálculo faz com que o Essbase percorra o banco de dados apenas uma vez, calculando os valores Real e Orçamento:

FIX(Actual,Budget)
   CALC DIM(Year, Measures);
ENDFIX

Por outro lado, ao usar dois comandos FIX, o seguinte script de cálculo faz com que o Essbase percorra o banco de dados duas vezes: uma vez calculando os valores de dados Reais e outra vez calculando os valores de dados de Orçamento:

FIX(Actual)
   CALC DIM(Year, Measures);
ENDFIX
FIX(Budget)
   CALC DIM(Year, Measures);
ENDFIX

Não é possível CORRIGIR em um subconjunto de uma dimensão que você calcula em um comando FIX. Por exemplo, o seguinte script de cálculo retorna uma mensagem de erro porque a operação CALC DIM calcula toda a dimensão Mercado, embora o FIX acima corrija em membros específicos da dimensão Mercado:

FIX(@CHILDREN(East) AND @UDA(Market,"New Mkt"))
   CALC DIM(Year, Measures, Product, Market);
ENDFIX

Os comandos FIX podem ser aninhados em outros blocos de comandos FIX. No entanto, o uso incorreto de comandos FIX aninhados pode resultar em resultados incorretos. Por exemplo, a intenção do seguinte script de cálculo é atribuir 1 a todos os filhos do Leste e, em seguida, atribuir 2 a Nova York:

FIX (@CHILDREN(EAST))
   "100-10"=1;
      FIX ("New York")
         "100-10"=2;
      ENDFIX
ENDFIX

No entanto, o comando FIX aninhado corrige em um subconjunto da dimensão que é especificada pelo comando FIX acima dele (o que não é permitido); portanto, o script atribui 2 a todos os filhos do Oriente porque o script é executado como se fosse escrito como:

FIX (@CHILDREN(EAST),''New York'')
   "100-10"=1;
   "100-10"=2;
ENDFIX

Em vez de usar comandos FIX aninhados, use dois blocos de comandos FIX separados. Por exemplo:

FIX (@CHILDREN(EAST))
   "100-10"=1;
ENDFIX

FIX ("New York")
   "100-10"=2;
ENDFIX

A variável (varName) definida por um comando de cálculo VAR não pode ser usada na instrução de membro FIX. Os membros FIX são avaliados antes da execução do cálculo, e as variáveis são avaliadas durante o tempo de execução após a definição da instrução FIX. Como as variáveis podem mudar durante a execução do cálculo, você não pode usá-las como parte da instrução FIX. O exemplo a seguir mostra o uso incorreto da variável na instrução de membro FIX:

VAR varName=1;
FIX (@relative(@memberat(@List("Product1","Product2"),varName),0))
   COMMANDS;
ENDFIX

Consulte Também

FIX…ENDFIX

Usar o Comando Exclude

Use o bloco de comandos EXCLUDE..ENDEXCLUDE nos scripts de cálculo de armazenamento em bloco do Essbase para definir quais membros devem ser excluídos do cálculo.

Às vezes, é mais fácil especificar quais membros não devem ser incluídos em um cálculo do que definir quais membros devem ser incluídos.

A especificação de membros que não devem ser calculados em um comando EXCLUDE…ENDEXCLUDE pode ser mais simples do que especificar uma combinação complexa de nomes de membros em um comando FIX…ENDFIX.

Consulte Também

EXCLUIR…ENDEXCLUDE