Como Trabalhar com o Script de Cálculo do Essbase

O Script de Cálculo do Essbase é a linguagem disponível para você gravar a sua própria lógica de negócios personalizada no Financial Consolidation and Close. Esta seção fornece alguns construtos básicos do Essbase, bem como restrições aplicadas ao Financial Consolidation and Close. Para obter detalhes sobre o Script de Cálculo do Essbase, consulte Introdução ao Essbase Cloud para Administradores.

Sintaxe Comum

  • Ponto-e-vírgula
    • Exigido no fim de cada instrução
    • Exemplo: Vendas = Vendas * 1,50;
    • Não é necessário após FIX e ENDFIX
  • Aspas Duplas
    • Nomes de membro com espaços/caracteres especiais/começam com número
    • A melhor prática é sempre usar aspas duplas no nome de um membro
    • Exemplo: "Relação de Caixa" = "Caixa"/"Passivos Atuais";
  • Operador Interdimensional
    • Use -> para especificar interseções de mais de uma dimensão
    • Exemplo: "Vendas"->"Alterações na Renda Líquida"->"Produto1";

Comentários

Comentários começam com /* e terminam com */.

São suportados um único ou vários comentários.

Você pode usar o ícone de barra de ferramentas para definir ou remover blocos de comentários.

FIX/ENDFIX

FIX/ENDFIX é um dos blocos básicos de construção de qualquer script de cálculo. Para fazer qualquer cálculo, defina uma seção FIX/ENDFIX e depois insira os cálculos reais dos negócios dentro dela.

Exemplo: suponha que "Produtos" seja sua dimensão personalizada e você queira calcular o números de televisões vendidas. Você poderia usar a seguinte sintaxe:

FIX("Televisions")

"Units_Sold" = "LED_TVs" + "UHD_TVs";

ENDFIX

Este é o cálculo real dos negócios:

"Units_Sold = "LED_TVs" + "UHD_TVs";, que calcula o número de televisões vendidas.

Nota:

Insira um ponto-e-vírgula no fim de cada instrução de cálculo, mas não para FIX ou ENDFIX.

A seção FIX/ENDFIX limita os membros de várias dimensões para participarem em cálculos dentro dela. Neste exemplo, somente "Televisões" estão participando dos cálculos.

Você também pode definir FIXes aninhadas, como as seguintes:

Exemplo Aninhado do Essbase 1

O cálculo acima também pode ser escrito da seguinte maneira:

Exemplo Aninhado do Essbase 2

Por exemplo, @List é uma função do Essbase. O Essbase fornece muitas funções. No entanto, o Financial Consolidation and Close não suporta todas essas funções do Essbase. Consulte a "Lista de Funções do Essbase" para ver uma lista de funções suportadas.

FIX em Dimensões do Financial Consolidation and Close

Um aplicativo do Financial Consolidation and Close pode conter 13 dimensões, dependendo dos recursos do aplicativo que estão habilitados. Dentre as 13 dimensões possíveis, você não tem permissão para usar FIX nas dimensões a seguir porque o sistema aplica FIX automaticamente a elas quando um usuário chama um processo de consolidação.

  • Cenário

  • Ano

  • Período

  • Exibição

  • Entidade

Por exemplo, suponha que você tenha a instrução a seguir:

Exemplo de Fix do Essbase 3

O sistema não conseguirá fazer a implantação e uma mensagem de erro será registrada no console de Jobs com as informações apropriadas.

No entanto, isso não quer dizer que você não possa usar essas dimensões no script. Em geral, um cálculo terá algo parecido com a sintaxe abaixo:

Exemplo de Fix do Essbase 4

Note que em FIX e no "Lado esquerdo", não é possível usar qualquer membro das dimensões Cenário, Ano, Período, Entidade e Exibição. Mas não existe essa restrição no "Lado direito" da equação.

A seguinte sintaxe seria permitida:

Exemplo de Fix do Essbase 5

Para as oito dimensões restantes, se você não usar FIX em uma dimensão específica, o sistema assumirá todos os membros dessa dimensão. Por exemplo, suponha que você tenha a instrução a seguir:

Exemplo de Fix do Essbase 6

Neste exemplo, todas as dimensões restantes têm FIX, exceto Conta. Neste caso, o Essbase considerará todos os membros da dimensão Conta para os cálculos dentro de FIX/ENDFIX.

Membros Restritos do Financial Consolidation and Close

Alguns membros específicos dentro de cada Financial Consolidation and Close não podem ser usados ou calculados no script de cálculo. Se os membros restritos forem usados, o sistema não conseguirá fazer a validação ou a implantação, e uma mensagem de erro será registrada no console de Jobs.

Lembre-se de que, se nenhum membro for especificado para a dimensão, o sistema assumirá TODOS os membros dentro da dimensão. No entanto, como os membros restritos não podem ser incluídos como parte do processo, você deverá excluí-los explicitamente nas instruções da dimensão FIX ou no lado esquerdo da expressão.

A tabela a seguir é uma listagem completa dos membros restritos do Financial Consolidation and Close dessas dimensões. Observe que, para as dimensões Moeda e Consolidação, eles serão restritos com base na regra de inserção que estiver em uso. Note que cada regra de inserção distribuída contém informações na seção Comentário sobre qual membro da dimensão Moeda e Consolidação pode ser incluído para essa regra.

Tabela 20-5 Membros de Dimensão Restritos

Dimensão Membro Expressão Lado Esquerdo Expressão Lado Direito
Cenário Todos Membros Não Sim
Ano Todos Membros Não Sim
Período Todos Membros Não Sim
Exibição Todos Membros Não Sim
Entidade Todos Membros Não Sim
Conta FCCS_CSTATUS Não Sim
  FCCS_CSTATUS FILTER Não Sim
  Taxas de Câmbio — Fechamento Não Sim
  Taxas de Câmbio — Média Não Sim
  Average Rate Não Sim
  Ending Rate Não Sim
  SrcAverageRate Não Sim
  TgtAverageRate Não Sim
  SrcEndingRate Não Sim
  TgtEndingRate Não Sim
  FCCS_Balance Não Sim
  FCCS_CTA Não Sim
  FCCS_CICTA Não Sim
  FCCS_Percent Control Não Sim
  FCCS_Current Ratio Não Sim
  FCCS_Quick Ratio Não Sim
  FCCS_Cash Ratio Não Sim
  FCCS_Inventory Turnover Não Sim
  FCCS_Asset Turnover Não Sim
  FCCS_Days Sales no Receivables Não Sim
  FCCS_Days Sales no Inventory Não Sim
  FCCS_Gross Profit Margin Não Sim
  FCCS_Return on Sales Não Sim
  FCCS_Return on Equity Não Sim
  FCCS_Debt to Equity Ratio Não Sim
  FCCS_Debt Ratio Não Sim
Origem de Dados FCCS_System Types Não Sim
  FCCS_Rate Override Não Sim
  FCCS_Account Override Não Sim
  FCCS_PCON Não Sim
  FCCS_Driver Source Não Sim
Movimento FCCS_Opening Balance Não Sim
  FCCS_OpeningBalance_Cash Não Sim
  FCCS_FX_Total_NonCash Não Sim
  FCCS_ClosingBalanceCash Não Sim

FIX em Todos os Membros de uma Dimensão, Exceto nos Membros Restritos

É um caso de uso comum em que você precisa usar FIX em todos os membros de nível 0 de uma dimensão e a dimensão pode ter membros restritos. Este exemplo mostra como usar FIX de maneira ideal em todos os membros de nível 0, exceto nos membros restritos dessa dimensão.

Por exemplo, a dimensão Conta tem o maior número de membros restritos.

Veja a seguir o snippet do código de script de cálculo que pode ser usado para FIX em todos os membros Conta de nível 0, exceto nos membros restritos:

@REMOVE( @LEVMBRS( "Account", 0 ), @LIST( @RELATIVE( "FCCS_System Account", 0 ),@RELATIVE( "FCCS_Drivers", 0 ),@RELATIVE( "FCCS_Ratios", 0 ),@RELATIVE( "Exchange Rates", 0 ) ) )

FIX em Dimensões Esparsas versus Dimensões Densas

FIX é mais eficiente quando feito em dimensões Esparsas. Neste caso, FIX criará blocos de extração do Essbase apenas para a combinação de membros de dimensão Esparsa que estão definidos em FIX e ignorarão o restante.

Essas combinações esparsas funcionam como índices para que o Essbase pesquise os blocos de dados correspondentes a índices e extraia-os dos cálculos. Portanto, nem todos os blocos são extraídos do sistema para execução.

Quando FIX for usado em uma dimensão Densa, os membros densos estarão presentes em cada bloco de dados no Essbase. Portanto, isso teria um impacto no desempenho caso não fosse usado corretamente. Note que, quando FIX estiver na dimensão Densa, o Essbase extrairá todos os blocos de dados sem limitar o número de blocos e limitará somente uma parte dentro de cada bloco. Portanto, talvez sejam necessárias várias passagens para que o banco de dados retorne as informações.

Por exemplo, você poderia fazer referência a "Contas" e "Pós-vendas" da dimensão Conta com as seguintes instruções:

Exemplo de Fix do Essbase 7

Quando o sistema processa a primeira correção em "Vendas", o Essbase extrai todos os blocos de dados da dimensão Conta, mas só trabalha na conta "Vendas" propriamente dita.

Mais adiante na instrução FIX em "Pós-Vendas", o Essbase extrai novamente todos os blocos de dados da dimensão Conta, mas só trabalha na conta "Pós-Vendas" propriamente dita. Nesse caso, são feitas duas passagens para o banco de dados dessas duas contas.

Para evitar problemas de desempenho, você pode evitar usar FIX na dimensão Conta; use IF...THEN para uma dimensão Densa.

Exemplo de Fix do Essbase 8

Neste exemplo em que você não está usando a instrução FIX, você só precisa fazer uma passagem para o banco de dados do Essbase.

A recomendação é usar FIX em dimensões Esparsas e usar IF..THEN em dimensões Densas. Isso ajudará no desempenho de cálculo.

Bloco de Membros

Os blocos de membros também são conhecidos como blocos de cálculo. Às vezes, você verá o termo "âncora" usado para blocos de Membros. A sintaxe de um bloco de membros é a seguinte:

Exemplo de Bloco de Membros do Essbase 1

Veja a seguir um exemplo de instruções de blocos de membros:

Exemplo de Bloco de Membros do Essbase 2

Neste exemplo, "Meu Saldo Inicial Total" também é conhecido como âncora ou membro de blocos de cálculo. Sempre que possível, esse membro deve ser um membro de uma dimensão Densa.

No cálculo acima, só limitaremos ao membro "Minha Abertura de Taxa de Câmbio", e os cálculos serão executados no membro especificado na instrução FIX.

Note que, ao usar instruções IF, você precisará de um bloqueio de membros. Você não pode criar instruções IF fora dos bloqueios de Membros.