Solucionando problemas de cubos OLAP

 

Publicado: julho de 2016

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

As seções a seguir descrevem problemas comuns que poderão ser úteis para solucionar problemas em cubos de dados de OLAP (processamento analítico online) no data warehouse do System Center 2012 - Service Manager .

Falhas de Processamento

Embora existam garantias no banco de dados DWRepository para assegurar a integridade dos dados, elas não podem impedir completamente a possibilidade de um erro de processamento. O erro de processamento mais comum é uma exceção DimensionKeyNotFound. Como as dimensões do SQL Server Analysis Server (SSAS) são processadas a cada 60 minutos por padrão, é possível que, ao processar o grupo de medidas do fato, as chaves de dimensão ainda não existam. Nesse caso, por padrão, a lógica de processamento reprocessa as dimensões do SSAS usando uma tarefa ProcessUpdate e, em seguida, reprocessa o fato até duas vezes para resolver os erros de chave.

Há algumas situações incomuns em que o reprocessamento pode falhar. Estas são as possíveis causas dessa falha:

  • Apenas o Repositório do data warehouse impõe chaves estrangeiras para garantir a integridade dos dados. O data mart não tem chaves estrangeiras para fatores de desempenho. Como a massa do processo de carga move os dados do repositório para o data mart usando métodos do ActiveX Data Objects, é possível que os dados do fato tenham sido carregados antes das chaves de dimensão como resultado de um problema de temporização. Para resolver esse problema, o processo de carga deve ser executado novamente para mover as chaves de dimensão existentes.

  • Em situações múltiplas de data mart, todas as dimensões de cada data mart visam o data mart do data warehouse principal. Isso é para reduzir o tamanho e o tempo de processamento dos cubos OLAP. No entanto, é possível, para fatos nos data marts do Operations Manager ou do Configuration Manager, visar as chaves de dimensão que ainda não existem no data mart do data warehouse principal. Nesse caso, você deve executar o trabalho de carregamento no data mart principal para resolver a falha de processamento dos cubos que visam os data marts do Operations Manager ou do Configuration Manager.

Solucionando problemas de personalizações de MDX

Como muitas personalizações de cubo exigem um conhecimento prático de MDX (Multidimensional Expressions), é comum que ocorram erros de sintaxe na expressão MDX inicial usada para personalização de cubo OLAP. Várias tentativas podem ser necessárias antes que a expressão esteja adequada às suas necessidades. Você deve testar a expressão MDX no cubo OLAP usando o Business Intelligence Development Studio (BIDS) ou o SSAS, sem salvar as alterações, antes de adicionar a expressão MDX ao cubo OLAP usando uma CubeExtension ou definindo-a no elemento SystemCenterCube.

No entanto, se houver um erro na expressão MDX quando esta for adicionada a um pacote de gerenciamento usando uma CubeExtension, será possível desinstalar a extensão do cubo para reverter todas as alterações que feitas no cubo OLAP. Se as expressões estiverem definidas usando um elemento SystemCenterCube, você deverá desinstalar o pacote de gerenciamento e, em seguida, excluir manualmente o cubo OLAP do SSAS antes de fazer qualquer correção e reimplantar o pacote de gerenciamento do cubo OLAP. Por isso, você deve definir as personalizações do cubo usando o elemento CubeExtension.

Falhas na implantação do pacote de gerenciamento do cubo OLAP

Você pode ter uma situação em que deseja procurar o grupo de medidas WorkItems Assigned To User e, em seguida, deseja dividir todos os usuários em um departamento específico. Quando você tenta executar o filtro em UserDim, nada acontece ou nenhum dado é retornado. Isso pode ser muito confuso, pois UserDim tem uma relação com o grupo de medidas.

Nessa situação, lembre-se de que a mesma dimensão do banco de dados pode ter várias funções no modelo multidimensional. Chamamos essas dimensões de dimensões com função múltipla. Por exemplo, a dimensão temporal pode ser usada várias vezes em um cubo OLAP que descreve informações sobre voo. Nesse caso, as diferentes dimensões com função múltipla poderão ser Departure Time e Arrival Time, em que ambas visam a dimensão Time .

Em um exemplo de WorkItems Assigned To User , o nome com função múltipla determinado da dimensão do usuário é, na realidade, AssignedToUser. Se o usuário tiver filtrado essa dimensão específica, em vez de "UserDim", terá como retorno as informações corretas.

O BIDS tem um recurso útil denominado guia de Uso da Dimensão que mostra as relações entre dimensões e cubos OLAP, para que se possa determinar quais dimensões podem ser usadas para dividir e separar o cubo OLAP. Além disso, no exemplo WorkItems Assigned To User , UserDim não tem relação com o grupo de medidas WorkItemAssignedToUser , enquanto UserDim(AssignedToUser) tem uma relação com o grupo de medidas em que o atributo de junção é UserDimKey. Nesse caso, é possível ver o nome com função múltipla destacado entre os parênteses da guia Uso da Dimensão.

Service Manager não tem um recurso da guia Uso da Dimensão. Portanto, será necessário consultar o BIDS para determinar exatamente quais dimensões podem ser filtradas em um cubo específico.

Falha ao processar cubos OLAP em um servidor SSAS remoto

Em certas situações, o processamento de um cubo OLAP em um servidor SSAS remoto pode falhar, porque o firewall não foi configurado de maneira adequada. A instância padrão do SSAS usa a porta TCP/IP 2383 e essa porta deve estar desbloqueada no firewall para permitir acesso. Para desbloquear a porta, execute as seguintes instruções de linha de comando:

C:\Windows\system32>set port=2383   
C:\Windows\system32>netsh advfirewall firewall add rule name="Analysis Services" protocol=TCP dir=in localport=2383 action=allow  

Interrupções no processamento de cubos OLAP

Pode haver várias causas para que o processamento de cubos OLAP seja interrompido. Primeiro, você deve verificar se o servidor tem RAM suficiente, principalmente em situações em que o data warehouse e o servidor SSAS estiverem hospedados no mesmo servidor, para que haja memória suficiente para executar trabalhos de ETL (extração, transformação e carregamento) do data warehouse e de processamento de cubos simultaneamente. Algumas soluções possíveis estão listadas aqui:

  1. Há problemas conhecidos de deadlock no Microsoft SQL Server 2008 Analysis Services. A solução alternativa é aumentar o número de threads no pool de threads de processamento antes do processamento ser interrompido. Se o sistema já estiver interrompido, a solução alternativa será reiniciar o Serviço de Gerenciamento do System Center e o Serviço do Analysis Services e, em seguida, reiniciar o item de trabalho de processamento de cubo com um status igual a 3, que significa não iniciado, de forma que o mecanismo de fluxo de trabalho do Service Manager possa reiniciá-lo.

    System_CAPS_ICON_note.jpg Observação


    Para o System Center 2012 R2 Service Manager, o Serviço de Gerenciamento do System Center foi renomeado como Microsoft Monitoring Agent.

    Para determinar o item de trabalho de processamento de cubo relevante, você pode executar as seguintes consultas no banco de dados DWStagingAndConfig. Observe que essas consultas são mostradas individualmente; no entanto, você pode facilmente reuni-las em uma só consulta:

    select processId from infra.process where processname like ‘Process.{CubeName}’  
    select batchid from infra.batch where processId = {ProcessId from previous query}  
    select * from infra.workitem(nolock) where BatchId = {BatchId from previous query}  
    update infra.workitem set statusid = 3 where workitemId = {workitemId from previous query)  
    
  2. Verifique a propriedade CoordinatorExecutionMode no serviço de SSAS e se ela está definida corretamente. É possível obter mais informações sobre esse problema nos Fóruns do SQL Server.

A tarefa DWMaintenance é interrompida na etapa ManageCubePartitions/ManageCubeTranslations

Nessa situação, a causa mais comum é um servidor SSAS que não responde. A solução alternativa é a mesma da primeira etapa na seção anterior "Interrupções de processamento de cubos OLAP". Para determinar o item de trabalho de processamento de cubo relevante, você pode executar as seguintes consultas no banco de dados DWStagingAndConfig. Observe que essas consultas são mostradas individualmente; no entanto, você pode facilmente reuni-las em uma só consulta:

select processid from infra.process where processname = 'DWMaintenance'  
select * from infra.ProcessModule where ProcessId = {ProcessId from previous query} (Note the ProcessModuleId where the VertexName is ManageCubePartitions/ManageCubeTranslaions)  
Select * from infra.batch where ProcessId = {ProcessId from previous query} (Note the BatchId from the largest batch)  
select * from infra.WorkItem where BatchId = {BatchId from previous query}  
update infra.workitem set statusid = 3 where workitemId = {workitemId for the step that is hung with the corresponding processmoduleid for ManageCubePartitions/ManageCubeTranslations)  
  

Consulte também

Noções básicas sobre cubos OLAP