A otimização de cubos BSO reduz o tamanho do banco de dados; ela envolve os seguintes processos:
Never como operador de consolidação para membros com os tipos de dados SmartList, Data, Texto e Porcentagem.Executar uma Reestruturação Explícita do Cubo
No Planning, você pode executar uma reestruturação de cubo explícita manualmente ou por meio de um job. Você também pode reestruturar cubos usando o comando restructureCube do EPM Automate ou a API REST do Reestruturar Cubo.
Note:
Para reestruturar o cubo usando o Calculation Manager:
Análise de Dados em um Cubo
Comece gerando o relatório de Análise do Bloco do Essbase. Consulte estas fontes de informações:
Note:
O cubo é colocado no modo somente leitura quando você exporta os dados do cubo para o arquivo de exportação que é usado como fonte para gerar o relatório de Análise do Bloco do Essbase. Dependendo do tamanho do cubo, a exportação pode demorar um pouco. Portanto, é recomendável clonar sua instância em uma instância de teste para realizar essa análise.O relatório de Análise do Bloco do Essbase fornece informações sobre estas três áreas:
Porcentagem de células com apenas Valores Próximos de Zero, que exibe a porcentagem de células com valores próximos de zero (como 0,000000001604) em blocos
Conversão de Valores Próximos de Zero em um Cubo BSO em Zero
Para remover valores próximos de zero ou muito pequenos nas dimensões esparsas no cubo BSO, use a função @round ou @truncate, que as transforma em zeros. Esses valores zero podem ser removidos, sendo substituídos por blocos #missing. Consulte Remoção de Zeros em um Cubo BSO.
Para converter valores próximos de zero em zero:
Configure o ambiente de regras de negócios para otimizar essa regra. No momento, essa regra está definida para ser executada no nível 0. Após os valores próximos de zero serem convertidos em zero e removidos do cubo (consulte a próxima seção), esses valores também serão removidos dos membros de nível superior durante a próxima agregação se SET AGGMISSG estiver habilitado.
SET UPDATECALC OFF;
SET CREATENONMISSINGBLK OFF;
SET CREATEBLOCKONEQ OFF;
FIXPARALLEL(NumberThreads, @RELATIVE("SparseDim",0))
FIX on all level 0 sparse dimension @RELATIVE(SparseDim,0)
Note:
UPDATECALC, CREATENONMISSINGBLK e CREATEBLOCKONEQ permaneçam, por padrão, desabilitados, a Oracle recomenda desabilitá-los explicitamente na regra de negócios.SparseDim" pelos nomes das dimensões esparsas nas quais blocos zero serão substituídos.FIXPARALLEL para ajudar a melhorar o desempenho, por exemplo, FIXPARALLEL(4, @RELATIVE("Scenario",0)).ENDFIXPARALLEL.Design de Cálculo 1 (para Cálculo Denso ou Esparso)
Esse cálculo altera os valores próximos de zero para zero.
"DenseMbr" = @round("DenseMbr",<Insert Decimal Place>);
"SparseMbr" = @round("SparseMbr ",<Insert Decimal Place>);
Design de Cálculo 2 (para Membros Densos Apenas no Modo Block)
"DenseBlockHeader" (
@CALCMODE(BLOCK);
"DenseMbr" =@round("DenseMbr",<Insert Decimal Place>);
)
Note:
SubstituaDenseMbr, SparseMbr e DenseBlockHeader pelos nomes reais.
Após executar essa regra, remova os zeros resultantes. Consulte Remoção de Zeros em um Cubo BSO para obter instruções.
Remoção de Zeros em um Cubo BSO
Comece removendo blocos zero nas dimensões esparsas no cubo substituindo-os por blocos #missing.
Para substituir blocos zero por blocos #missing:
Defina o ambiente da regra de negócios para otimizar esta regra de negócios:
SET UPDATECALC OFF;
SET CREATENONMISSINGBLK OFF;
SET CREATEBLOCKONEQ OFF;
FIXPARALLEL(NumberThreads, @RELATIVE("SparseDim",0))
FIX on all level 0 sparse dimension @RELATIVE(SparseDim,0)
Note:
UPDATECALC, CREATENONMISSINGBLK e CREATEBLOCKONEQ estejam, por padrão, desabilitados. A Oracle recomenda desativá-los explicitamente na regra de negócios.SparseDim" pelos nomes das dimensões esparsas nas quais blocos zero serão substituídos.FIXPARALLEL para ajudar a melhorar o desempenho, por exemplo, FIXPARALLEL(4, @RELATIVE("Scenario",0)).ENDFIXPARALLEL.Design de Cálculo 1 (para Cálculo Denso ou Esparso)
Esse cálculo resulta no valor original e altera valores zero para #missing.
"DenseMbr" = "DenseMbr" * "DenseMbr" / "DenseMbr"; "SparseMbr" = "SparseMbr" * "SparseMbr" / "SparseMbr";
Design de Cálculo 2 (para Membros Densos Apenas no Modo Block)
"DenseBlockHeader" (
@CALCMODE(BLOCK);
IF ("DenseMbr" == 0)
"DenseMbr" = #Missing;
ENDIF
Note:
SubstituaDenseMbr e SparseMbr, e DenseBlockHeader, pelos nomes reais.Como Usar Never como o Operador de Consolidação para Membros com Tipos de Dados de Lista Inteligente, Data, Texto e Porcentagem
Os membros de dimensão que têm um tipo de dados de Lista Inteligente, Data, Texto e Porcentagem devem usar Never como o operador de consolidação. Usar o operador de consolidação Addition aumenta o tamanho do cubo sem adicionar nenhum valor. Usar Ignore como o operador de consolidação só interromperá a adição dentro da dimensão do membro; o roll-up de valores não será interrompido de outras dimensões, o que potencialmente pode criar bloqueios desnecessários.