Remover Dados de Cubos de Armazenamento Agregados

Você pode limpar todos os dados de um cubo de armazenamento agregado (ASO) do Essbase ou pode limpar dados de uma região especificada, mantendo os dados localizados em outras regiões. Você pode fazer limpezas físicas ou lógicas.

Para limpar dados, você deve ter a mesma permissão de aplicativo para carregar dados (Permissão de Atualização do Banco de Dados ou superior).

Você pode usar um job Limpar Dados na interface Web do Essbase, usar o comando limpar da CLI ou usar a instrução alterar banco de dados MaxL com a gramática limpar dados na região. Exemplos neste tópico estão usando MaxL.

Limpando Dados de Regiões Específicas

Esse método é útil quando você deseja excluir dados voláteis (como dados correspondentes ao último mês), mantendo os dados históricos.

Os métodos para limpar dados de uma região ASO incluem limpezas físicas e lógicas.

  • Limpeza Física

    As células de Entrada na região especificada são removidas fisicamente do cubo de armazenamento agregado, conforme ilustrado abaixo.

    Figura 37-2 Limpando fisicamente uma região de dados


    Esta imagem ilustra como as células de entrada são removidas fisicamente ao limpar dados usando o método físico.

    Se houver várias fatias de dados no cubo, a operação de região física clara mesclará automaticamente todas as fatias de dados na fatia de dados principal. Depois que os dados da região especificada forem apagados, o Essbase materializará todas as views agregadas que estavam presentes na fatia de dados principal antes da operação de limpeza da região.

    O processo para limpar dados fisicamente é concluído em um período proporcional ao tamanho dos dados inseridos, e não para o tamanho dos dados sendo limpos. Portanto, é possível utilizar esse método somente ao remover grandes segmentos de dados.

    Para limpar dados fisicamente, use a instrução alter database MaxL com a gramática clear data in region e a palavra-chave physical:

    alter database appname.dbname clear data in region 'MDX set expression' physical;

    Para economizar tempo, você pode usar uma lista separada por vírgulas de MDX set expressions para limpar de várias regiões físicas.

  • Limpeza Lógica

    As células de entrada na região especificada são gravadas para um novo segmento de dados com valores de compensação negativos que resultam em um valor zero para as células a serem removidas, conforme ilustrado a seguir.

    Figura 37-3 Limpando Logicamente uma Região de Dados


    Esta imagem ilustra como um novo intervalo de dados com valores de compensação é criado ao limpar dados usando o método lógico.

    A operação lógica de região clara mescla automaticamente somente a fatia de dados com valores zero na fatia de dados principal; outras fatias de dados no cubo não são mescladas. Depois que os dados da região especificada forem apagados, o Essbase materializará as views agregadas somente na nova fatia de dados.

    O processo lógico de limpeza de dados é concluído no tempo proporcional ao tamanho dos dados que estão sendo limpos. Como as células de compensação são criadas, essa opção aumenta o tamanho do cubo.

    Para limpar dados de forma lógica, use a instrução alter database MaxL com a gramática clear data in region, mas sem a palavra-chave physical:

    alter database appname.dbname clear data in region 'MDX set expression';

    As consultas para a região limpa logicamente retornam valores zero em vez de valores #MISSING. Pode ser necessário atualizar fórmulas que dependem dos valores #MISSING para células vazias.

    Para remover células com o valor zero, use a instrução alter database MaxL com a cláusula merge incluindo a palavra-chave remove_zero_cells:

    alter database appname.dbname merge all data remove_zero_cells;

    Observação:

    A Oracle não recomenda a execução de uma segunda operação lógica de região clara na mesma região, porque a segunda operação não limpa as células de compensação criadas na primeira operação e não cria novas células de compensação.

Ao especificar a região ASO a ser limpa, siga estas diretrizes:

  • A região deve ser simétrica. Por exemplo,

    • {(Jan, Budget)} é uma região simétrica válida que limpa todos os dados de Orçamento para Jan.

    • {(Jan, Forecast1),(Feb, Forecast2)} é uma região inválida porque consiste em duas regiões assimétricas (Jan, Forecast1 e Fev, Forecast2).

  • Os membros individuais em qualquer dimensão na especificação de região devem ser membros armazenados.

  • Os membros da região não podem ser:

    • Membros dinâmicos (membros com fórmulas MDX implícitas ou explícitas)

    • De dimensões de atributo

      Se você precisar limpar células por um atributo, use a função MDX Atributo.

  • Os membros da região podem ser membros de nível superior em hierarquias armazenadas, o que é uma maneira conveniente de especificar vários membros de nível 0.

    Por exemplo, você pode especificar Qrt1, que é o mesmo que especificar Jan, Fev e Mar (os filhos de nível 0 de Qrt1):


    Esta imagem mostra um esquema de tópicos, conforme descrito no texto que precede a imagem.

    As duas instruções MaxL a seguir produzem os mesmos resultados:

    alter database appname.dbname clear data in region '{Qtr1}';
    alter database appname.dbname clear data in region '{Jan, Feb, Mar}';
  • Somente para limpezas físicas, os membros da região podem ser membros de nível superior em hierarquias alternativas.

    Por exemplo, você pode especificar a Mercadoria de Alto Nível, que é o mesmo que especificar o Flat Panel, HDTV, Gravadores Digitais e Notebooks (os filhos compartilhados e de nível 0 da Mercadoria de Alto Nível):


    Esta imagem mostra um esquema de tópicos, conforme descrito no texto que precede a imagem.

    As duas instruções MaxL a seguir produzem os mesmos resultados:

    alter database appname.dbname clear data in region '{High End Merchandise}';
    alter database appname.dbname clear data in region '{[Flat Panel],[HDTV],[Digital Recorders],[Notebooks]}';

    Para especificar membros em hierarquias alternativas ao limpar dados logicamente, use a função MDX Descendentes.

    Observação:

    Quando a região contiver membros de nível superior de hierarquias alternativas, você poderá ter uma diminuição no desempenho. Neste caso, considere usar apenas membros de nível 0.

  • A expressão do conjunto MDX deve estar entre aspas simples.

Por exemplo, para limpar todos os dados de janeiro dos cenários Forecast1 e Forecast2, use esta instrução:

alter database ASOSamp.Basic clear data in region 'CrossJoin({Jan},{Forecast1, Forecast2})';

Durante a operação de limpeza de região, não é possível executar operações que atualizem o cubo (como carregar dados, mesclar fatias de dados ou limpar dados de outra região), nem exportar dados. Você pode consultar o cubo; no entanto, os resultados da consulta se baseiam no conjunto de dados antes da operação de limpeza de região.

A cláusula limpar dados na região não pode limpar dados de todo o cubo.

Limpando Todos os Dados

A limpeza de todos os dados de um cubo de armazenamento agregado é a mesma de um cubo de armazenamento em blocos. Para limpar o cubo inteiro, use a instrução alter database MaxL com a palavra-chave reset:

alter database appname.dbname reset;