@LEVMBRS
, em vez de @RELATIVE
, se usado na dimensão inteira.@CHILDREN
, em vez de @RELATIVE
.@REMOVE
e @LEVMBRS
se quiser excluir alguns membros de uma instrução FIX.Execução de Cálculos Usando Datas Armazenadas no Planning
O Planning permite que você insira valores de data. Por exemplo, quando se usa o formato MM/DD/AAAA, é possível inserir uma data de início como 11/01/2019 e uma data de término como 06/01/2020. O Oracle Essbase armazena valores formatados de data como valores numéricos. Por exemplo, a data de início anterior é armazenada como 20191101 e a de término como 201200601. Você pode usar funções do Essbase, por exemplo, a função @ROUND
, @INT
ou @TRUNCATE
, para calcular o número de meses entre qualquer data de início e qualquer data de término. O exemplo a seguir mostra como calcular o número de meses entre uma data de início e uma data de término usando a função @ROUND
:
(@ROUND ("End Date",-4) - @ROUND ("Start Date",-4))/10000*12O resultado deste cálculo
(20200000 – 20190000)/10000 *12
é 12.(@ROUND ("End Date",-2) - @ROUND ("End Date",-4))/100O resultado do cálculo
(20200600 – 20200000)/100
é 6.(@ROUND ("Start Date",-2) - @ROUND ("Start Date",-4))/100O resultado do cálculo
(20191100 – 20190000)/100
é 11.(12+6-11)
para calcular o número de meses (7) entre qualquer data de início e qualquer data de término.
(((@ROUND ("End Date",-4) - @ROUND ("Start Date",-4))/10000*12) + ((@ROUND ("End Date",-2) - @ROUND ("End Date",-4))/100)- ((@ROUND ("Start Date",-2) - @ROUND ("Start Date",-4))/100))
Uso da Função @CURRMBR
A função @CURRMBR
, que retorna o nome do membro da dimensão que está sendo calculado no momento, é muito útil para definir o escopo e gerenciar cálculos complexos. No entanto, considere o seu impacto no desempenho.
O desempenho não é afetado quando a função @CURRMBR
é usada em uma dimensão esparsa porque o bloco corresponde a um membro de dimensão esparsa apenas. No entanto, o desempenho dessa função é mais lento quando ela é usada em dimensões densas porque ela executa cálculos no nível do bloco, e não no nível da célula. Por isso, essa função calcula todos os membros de dimensões densas, mesmo que um membro de dimensão densa específico não esteja presente na consulta. Consequentemente, use essa função moderadamente com dimensões densas.
Além disso, quando usada em dimensões densas, a dimensão @CURRMBR
pode produzir erros ou resultados inesperados se utilizada juntamente com outras funções, como @CONCATENATE
. Por exemplo, se um membro calculado dinamicamente em uma consulta contiver a fórmula "Actual"->@MEMBER(@CONCATENATE(@NAME (@CURRMBR ("Account")),"_Total"))
e a dimensão Conta for esparsa, a consulta será executada sem erros desde que a conta na consulta gere um membro de outline válido. No entanto, se a dimensão Account for densa, a consulta resultará no erro a seguir, mesmo se a conta na consulta gerar um membro de outline válido.
Error executing formula for [member name] (line 0): attempt to cross a null @ member in function [@X]
Esse erro é gerado porque a função @CURRMBR
faz cálculos no nível do bloco e, portanto, calcula todas as contas no bloco denso. Nem todas as contas no bloco geram um membro de outline válido, o que resulta na mensagem de erro anterior. Para obter mais informações sobre a função @CURRMBR
, consulte @CURRMBR em Referência Técnica do Oracle Essbase.