Gravar Fórmulas em Outlines de Armazenamento Agregado
Gravar fórmulas MDX em outlines de armazenamento agregado (ASO) do Essbase usando o editor de fórmulas. As fórmulas permitem aplicar equações matemáticas básicas, calcular membros entre dimensões, executar testes condicionais e filtrar com base em atributos definidos pelo usuário (UDAs).
Fórmulas em Outlines de Armazenamento Agregado
As fórmulas são texto sem formatação. Você pode digitar as fórmulas diretamente no editor de fórmulas ou pode criar uma fórmula em qualquer editor de texto e colar o texto no editor de fórmulas.
A verificação de sintaxe baseada em MDX informa sobre erros de sintaxe em fórmulas; por exemplo, um nome de função digitado incorretamente ou um membro inexistente. Nomes de membros desconhecidos podem ser validados em uma lista de nomes de funções. Se você não estiver conectado à instância de serviço ou ao aplicativo associado ao outline, o Essbase poderá conectá-lo para validar nomes desconhecidos.
A verificação de sintaxe ocorre ao validar ou salvar uma fórmula. Os erros são exibidos na interface do usuário. Se ocorrer um erro, você optará por salvar ou não a fórmula. Se você salvar uma fórmula com erros, será avisado ao salvar a estrutura. Quando você calcula uma fórmula com erros, ela é ignorada e o membro recebe o valor $MISSING.
Um verificador de sintaxe não pode avisá-lo sobre erros semânticos em uma fórmula. Erros semânticos ocorrem quando uma fórmula não funciona como você espera. Uma forma de encontrar erros semânticos em uma fórmula é colocar a expressão de valor numérico que define a fórmula em uma consulta MDX e executá-la, para verificar se os resultados são como você espera.
Você pode incluir fórmulas em uma origem de dados de criação de dimensão. Consulte Definir Informações do Tipo de Campo de Criação de Dimensão.
Equações Básicas para Outlines de Armazenamento Agregado
Você pode aplicar uma operação matemática a uma fórmula para criar uma equação básica. Por exemplo, a seguinte fórmula é aplicada ao membro Média de Unidades/Transação no cubo ASOsamp Basic:
[Units]/[Transactions]A fórmula em Média de Unidades/Transação divide o número de unidades pelo número de transações para chegar ao número médio de unidades por transação.
Em outlines de armazenamento agregado, os membros não podem ser marcados como itens de despesa. Portanto, as funções no Calc, como @VAR e @VARPER, que determinam a diferença entre dois membros considerando as tags de despesa, não são relevantes nos outlines de armazenamento agregado.
O operador de subtração MDX pode ser usado para calcular a diferença entre dois membros. Por exemplo, a seguinte fórmula pode ser aplicada a um novo membro, chamado Dif. de Preço, em ASOsamp Basic, para calcular a diferença entre o preço pago e o preço original:
[Price Paid]-[Original Price]Membros entre Dimensões em Outlines de Armazenamento Agregado
O ASOsamp Basic fornece uma fórmula em um membro chamado % do Total. Esta fórmula de membro identifica a porcentagem do total de Medidas que é produzida por Transações. A fórmula para % do Total:
Transactions/
(Transactions,Years,Months,[Transaction Type],[Payment Type],
Promotions,Age,[Income Level],Products,Stores,Geography)A fórmula especifica um membro (Transações) dividido por uma tupla (Transações, Anos, ...). A fórmula lista um membro superior de cada dimensão para contabilizar todos os dados de Transação no cubo, ou seja, não dados de Transação para o membro Ano Atual, mas dados de Transação para todos os membros da dimensão Anos, não dados de Transação para meses nos dois primeiros trimestres, mas Transação para todos os meses, e assim por diante. Dessa forma, o valor de % do Total representa a porcentagem do total de Medidas que são produzidas pelas Transações.
Testes Condicionais em Fórmulas para Outlines de Armazenamento Agregado
Você pode definir uma fórmula que use um teste condicional ou uma série de testes condicionais para determinar o valor de um membro. Use a função IIF para realizar um teste com outra condição. Você pode aninhar funções IIF para criar uma consulta mais complexa.
O exemplo especifica uma fórmula para um membro que representa o preço que a empresa deve pagar pelas transações de cartão de crédito, que inclui uma cobrança de 5%. O exemplo a seguir pressupõe que o membro Preço de Crédito foi adicionado à dimensão Medidas do cubo ASOsamp Basic. O Preço de Crédito tem a seguinte fórmula, que adiciona 5% ao Preço Pago quando o tipo de pagamento é um cartão de crédito.
IIF (
[Payment Type].CurrentMember=[Credit Card],
[Price Paid] * 1.05, [Price Paid]
)Use a construção CASE, WHEN, THEN para criar fórmulas com vários testes e condições else.
A função Filtro retorna as tuplas do conjunto de entrada que atendem aos critérios da condição de pesquisa especificada. Por exemplo, para estabelecer uma linha de base (100) para todos os produtos, você pode adicionar um membro Linha de Base e criar uma fórmula para ele, da seguinte forma:
Count(Filter(Descendants([PersonalElectronics],
[Products].Levels(0)),[Qtr1] > 100.00))UDAs em Fórmulas nos Outlines de Armazenamento Agregado
UDAs são palavras ou frases que você cria para um membro. Por exemplo, em Sample.Basic, os membros de nível superior da dimensão Mercado têm o UDA Small Market ou o UDA Major Market.
O exemplo Mercado Principal usado neste tópico mostra como criar uma fórmula para um membro que mostra a soma de vendas de todos os principais membros do mercado. O exemplo considera que um novo membro (Total do Mercado Principal) foi adicionado ao Sample.Basic.
-
MDX fornece uma função booleana, IsUDA, que retorna TRUE se um membro tiver a tag UDA associada. A seguinte sintaxe retornará TRUE se o membro atual da dimensão Mercado tiver o UDA "Major Market":
IsUda([Market].CurrentMember, "Major Market") -
Uma função Filtro, quando usada com IsUDA (conforme mostrado na seguinte sintaxe), percorre cada membro da dimensão Mercado e retorna um valor para cada membro que tenha o UDA Mercado Principal:
Filter([Market].Members, IsUda([Market].CurrentMember, "Major Market")) -
A função Soma adiciona os valores retornados pela função Filtro; para o exemplo Mercado Principal, a seguinte fórmula é produzida:
Sum (Filter([Market].Members, IsUda([Market].CurrentMember, "Major Market")))Esta fórmula está anexada ao membro Total do Mercado Principal.