Testes Condicionais

Você pode definir fórmulas do Essbase que usam um teste condicional ou uma série de testes condicionais para controlar o fluxo de cálculo. Em conjunto com os comandos de fluxo, você pode usar funções boolianas que retornam TRUE ou FALSE (1 ou 0, respectivamente) com base no resultado do teste.

Os comandos IF e ENDIF definem um bloco condicional. As fórmulas entre os comandos IF e ENDIF só são executadas se o teste retornar TRUE (1). Se o teste retornar FALSE (0), você poderá usar os comandos ELSE e ELSEIF para especificar ações alternativas. As fórmulas que seguem cada comando ELSE são executadas somente se o teste anterior retornar FALSE (0). As condições que se seguem a cada comando ELSEIF só são testadas se o comando IF anterior retornar FALSE (0).

Quando você usa uma fórmula condicional em um script de cálculo, coloque-a entre parênteses e associe-a a um membro no outline do banco de dados, conforme mostrado nos exemplos desta seção.

Em conjunto com um comando IF, você pode usar funções que retornem TRUE ou FALSE (1 ou 0, respectivamente) com base no resultado de um teste condicional. Essas funções são conhecidas como Funções Boolianas.

Use funções boolianas para determinar qual fórmula usar. A decisão é baseada nas características da combinação de membros atual. Por exemplo, para restringir um determinado cálculo aos membros na dimensão Produto que contêm dados de entrada, prefacie o cálculo com um teste IF baseado em @ISLEV(Product,0).

Se um dos parâmetros de função for um membro multidimensional, como @ISMBR(Vendas -> Orçamento), todas as partes do membro multidimensional deverão corresponder às propriedades da célula atual para retornar um valor de VERDADEIRO (1).

As seguintes funções boolianas especificam condições:

Tabela 17-3 Lista de Funções Boolianas que Testam Condições

Função Condição

@ISACCTYPE

O membro atual tem um identificador de contas especificado (por exemplo, um identificador de Despesa)

@ISANCEST

Membro atual é um antecessor do membro especificado

@ISIANCEST

Membro atual é um antecessor do membro especificado ou o membro especificado em si

@ISCHILD

Membro atual é um filho do membro especificado

@ISICHILD

Membro atual é filho do membro especificado, ou o membro especificado em si

@ISDESC

Membro atual é um descendente do membro especificado

@ISIDESC

Membro atual é um descendente do membro especificado, ou o próprio membro especificado

@ISGEN

O membro atual da dimensão especificada está na geração especificada

@ISLEV

O membro atual da dimensão especificada está no nível especificado

@ISMBR

O membro atual corresponde a qualquer um dos membros especificados

@ISPARENT

Membro atual é o pai do membro especificado

@ISIPARENT

Membro atual é o pai do membro especificado ou o membro especificado em si

@ISSAMEGEN

O membro atual (da mesma dimensão que o membro especificado) está na mesma geração que o membro especificado

@ISSAMELEV

Membro atual (da mesma dimensão que o membro específico) está no mesmo nível que o membro específico

@ISSIBLING

Membro atual é um irmão do membro especificado

@ISISIBLING

Membro atual é um irmão do membro especificado, ou o membro especificado em si

@ISUDA

Existe um UDA especificado para o membro atual da dimensão especificada

Quando você coloca fórmulas no outline do banco de dados, só pode usar os comandos IF, ELSE, ELSEIF e ENDIF e as funções boolianas para controlar o fluxo dos cálculos. É possível usar comandos de controle adicionais em um script de cálculo.

Para obter informações sobre como desenvolver scripts de cálculo e como usá-los para controlar como o Essbase calcula um banco de dados, consulte Desenvolver Scripts de Cálculo para Cubos de Armazenamento em Blocos.