Sobre o processamento de cubos

 

Publicado: julho de 2016

Aplicável a: System Center 2012 SP1 - Service Manager, System Center 2012 R2 Service Manager, System Center 2012 - Service Manager

Depois que um cubo OLAP (processamento analítico online) foi implantado e todas as suas partições foram criadas, ele está pronto para ser processado, de forma que possa ser exibido. O processamento de um cubo é a etapa final após a execução de ETL (extração, transformação e carregamento). Essas etapas ocorrem da seguinte maneira:

  1. Extração: extrai dados do sistema de origem

  2. Transformação: aplica funções de acordo com os dados para um esquema dimensional padrão

  3. Carregamento: carrega os dados no data mart para consumo

  4. Processo: carrega os dados do data mart no cubo OLAP para navegação

O processamento de um cubo OLAP ocorre quando todas as agregações do cubo são calculadas e o cubo é carregado com essas agregações e esses dados. Tabelas de dimensões e fatos são lidas e os dados são calculados e carregados no cubo. Quando você projeta um cubo OLAP, o processamento deve ser cuidadosamente considerado por causa do possível efeito significativo que o processamento pode tem em um ambiente de produção em que podem existir milhões de registros. Um processo completo de todas as partições nesse ambiente pode demorar dia, até mesmo semanas, podendo renderizar a infraestrutura e os cubos do Service Manager não utilizáveis para usuários finais. Uma recomendação é desabilitar o cronograma de processamento de todos os cubos que não estão sendo usados para reduzir a sobrecarga no sistema.

O processamento de cubos OLAP consiste em duas tarefas separadas:

  1. Processamento de dimensão

  2. Processamento de partição

Cada cubo OLAP tem um trabalho de processamento correspondente no Service Manager Console e é executado em um cronograma configurável pelo usuário. Cada tipo de tarefa de processamento é descrita nas seções a seguir.

Processamento de Dimensão

Sempre que uma nova dimensão é adicionada ao banco de dados do SSAS (SQL Server Analysis Server), um processo completo deve ser executado na dimensão para colocá-la em um estado totalmente processado. No entanto, depois que uma dimensão foi processada, não há garantia de que ela será processada novamente quando outro cubo que é direcionado para a mesma dimensão é processado. Porém, não reprocessar automaticamente a dimensão impede o Service Manager de reprocessar cada dimensão para cada cubo. Isso será verdadeiro principalmente se a dimensão tiver sido processada recentemente, pois será pouco provável que existam novos dados que ainda não foram processados. Para otimizar a eficiência do processamento, há uma classe singleton, que é definida no pacote de gerenciamento Microsoft.SystemCenter.Datawarehouse.OLAP.Base, denominado Microsoft.SystemCenter.Warehouse.Dimension.ProcessingInterval. A seguir está um exemplo dessa classe:

<!-- This singleton class defines the minimum interval of time in minutes that must elapse before a shared dimension is reprocessed. -->   
<ClassType ID="Microsoft.SystemCenter.Warehouse.Dimension.ProcessingInterval" Accessibility="Public" Abstract="false" Base="AdminItem!System.AdminItem" Singleton="true">  
<Property ID="IntervalInMinutes" Type="int" Required="true" DefaultValue="60"/>  
</ClassType>  

Essa classe singleton contém uma propriedade, IntervalInMinutes, que descreve com que frequência processar uma dimensão. Por padrão, essa propriedade é definida como 60 minutos. Por exemplo, se uma dimensão foi processada às 15h05 e outro cubo que é direcionado para a mesma dimensão é processado às 15h45, a dimensão não é reprocessada. Uma desvantagem dessa abordagem é a maior probabilidade de erros de chave de dimensão. Um mecanismo de repetição manipula erros de chave de dimensão para reprocessar a dimensão e, em seguida, a partição de cubo.Para obter mais informações sobre falhas de processamento, consulte a seção "Problemas com depuração e solução de problemas comuns" no tópico Solucionando problemas de cubos OLAP.

Depois que uma dimensão tiver sido completamente processada, será executado o processamento incremental com ProcessUpdate. A outra ocasião que o ProcessFull é executado é quando um esquema de dimensão muda, porque ele resulta na dimensão retornando para um estado não processado. Lembre-se que se ProcessFull for executado em uma dimensão, todos os cubos afetados e suas partições existirão subsequentemente em um estado não processado e precisarão ser completamente processados na próxima execução agendada.

Processamento de Partição

O processamento de partição deve ser cuidadosamente considerado porque o reprocessamento de uma partição grande é muito lento e consome muitos recursos da CPU no servidor que hospeda o SSAS. O processamento de partição geralmente demora mais do que o processamento de dimensão. Ao contrário do processamento de dimensão, o processamento de uma partição não tem efeitos colaterais em outros objetos. O únicos dois tipos de processamento que são executados nos cubos OLAP do System Center 2012 - Service Manager são ProcessFull e ProcessAdd.

Semelhante a dimensões, a criação de novas partições em um cubo OLAP requer uma tarefa ProcessFull para que a partição esteja em um estado em que ela possa ser consultada. Como uma tarefa ProcessFull é uma operação dispendiosa, você deve executá-la somente quando necessário, por exemplo, quando criar uma partição ou quando uma linha foi atualizada. Em cenários em que linhas foram adicionadas e nenhuma linha foi atualizada, o Service Manager pode executar uma tarefa ProcessAdd. Para fazer isso, o Service Manager usa marcas d'água e outros metadados. Especificamente, as tabelas etl.cubepartition e etl.tablepartition são consultadas para determinar que tipo de processamento executar.

O diagrama a seguir ilustra como o Service Manager determina que tipo de processamento executar com base nos dados de marca d' água.

Diagrama de processamento do cubo

Quando uma tarefa ProcessAdd é executada, o Service Manager limita o escopo da consulta usando marcas d' água. Por exemplo, se o valor de InsertedBatchId for 100 e o valor de WatermarkBatchId for 50, a consulta carregará dados somente do data mart em que o InsertedBatchId for maior do que 50 e menor do que 100.

Finalmente, será importante observar que o Service Manager não dará suporte ao processamento manual de cubos OLAP usando o SSAS ou o Business Intelligence Development Studio. O processamento de cubos fora dos métodos fornecidos no System Center 2012 - Service Manager, incluindo os cmdlets Service Manager Console e Service Manager, não atualizarão as tabelas de marca d' água. Portanto, é possível que ocorram problemas de integridade de dados. Se você reprocessou acidentalmente o cubo de forma manual, uma possível solução alternativa é não processar o cubo OLAP manualmente da mesma maneira. Em seguida, a próxima vez que o Service Manager processar o cubo, ele executará automaticamente uma tarefa ProcessFull porque as partições estarão em um estado não processado. Isso atualizará todas as marcas d' água e metadados corretamente, de forma que todos os possíveis problemas de integridade de dados sejam corrigidos.

Consulte também

Noções básicas sobre cubos OLAP