Otimizar Cubos BSO

A otimização de cubos BSO reduz o tamanho do banco de dados; ela envolve os seguintes processos:

  • Execute uma reestruturação explícita.
  • Execute o relatório de Análise do Bloco do Essbase para identificar valores repetidos e zeros no cubo BSO.
  • Substitua blocos zero por blocos #missing.
  • Use 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:

  • Essa não é uma atualização de banco de dados, mas uma reestruturação densa explícita do cubo.
  • Uma reestruturação explícita remove blocos #missing para reduzir o tamanho do banco de dados BSO.

Para reestruturar o cubo usando o Calculation Manager:

  1. No Navegador, selecione Regras em Criar e Gerenciar para abrir o Calculation Manager.
  2. Selecione Ações e, em seguida, Propriedades do Banco de Dados.
  3. No Modo de Exibição do Enterprise, expanda o banco de dados contendo o cubo que você deseja reestruturar.
  4. Clique com o botão direito do mouse no cubo que deseja reestruturar e selecione Reestrutura Banco de Dados.

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:

  1. Porcentagem de blocos com somente Zero, que mostra os blocos do arquivo de exportação que têm somente zeros como porcentagem.
  2. 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

  3. 10 Valores de Célula Numérica Mais Repetidos por Porcentagem de Células Numéricas, que mostra os 10 valores mais repetidos como uma porcentagem de todos os valores no arquivo de exportação.
  4. 100 Combinações de Membros Mais Densas com Valores Repetidos, mostra as 100 combinações mais densas com valores repetidos no cubo. A coluna Valor da Célula mostra um valor para cada membro, na ordem em que ele aparece na hierarquia, como uma coluna diferente. Por exemplo, se houver um Período na coluna, haverá uma coluna diferente para Janeiro, Fevereiro e assim por diante. Outras dimensões densas são exibidas nas linhas. Isso ajuda a identificar os locais dos valores repetidos.

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:

  1. Crie uma regra de negócios para arredondar ou truncar valores próximos de zero ou muito pequenos para 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:

    • Embora UPDATECALC, CREATENONMISSINGBLK e CREATEBLOCKONEQ permaneçam, por padrão, desabilitados, a Oracle recomenda desabilitá-los explicitamente na regra de negócios.
    • Certifique-se de substituir "SparseDim" pelos nomes das dimensões esparsas nas quais blocos zero serão substituídos.
    • Use FIXPARALLEL para ajudar a melhorar o desempenho, por exemplo, FIXPARALLEL(4, @RELATIVE("Scenario",0)).
    • Certifique-se de especificar ENDFIXPARALLEL.
  2. Use um dos seguintes designs de cálculo otimizados para alterar valores próximos de zero para zero. Selecione o design de cálculo que é mais bem executado de acordo com seu design de dimensão, os padrões de dados e os processos.

    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:

    Substitua DenseMbr, 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:

  1. Crie uma regra de negócios 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:

    • Embora UPDATECALC, CREATENONMISSINGBLK e CREATEBLOCKONEQ estejam, por padrão, desabilitados. A Oracle recomenda desativá-los explicitamente na regra de negócios.
    • Certifique-se de substituir "SparseDim" pelos nomes das dimensões esparsas nas quais blocos zero serão substituídos.
    • Use FIXPARALLEL para ajudar a melhorar o desempenho, por exemplo, FIXPARALLEL(4, @RELATIVE("Scenario",0)).
    • Certifique-se de especificar ENDFIXPARALLEL.
  2. Use um dos designs de cálculo otimizado a seguir para alterar blocos zero para blocos #missing. Selecione o design de cálculo que é mais bem executado de acordo com seu design de dimensão, os padrões de dados e os processos.

    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:

    Substitua DenseMbr 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.