Partilhar via


Processando objetos (XMLA)

No Microsoft SQL Server SQL Server Analysis Services, o processamento é a etapa ou série de etapas que transformam dados em informações para análise de negócios. O processamento será diferente dependendo do tipo de objeto, mas sempre fará parte da transformação de dados em informações.

Para processar um objeto SQL Server Analysis Services, você pode usar o comando Process. O comando Process pode processar os seguintes objetos em uma instância de SQL Server Analysis Services:

  • Cubes

  • Bancos de dados

  • Dimensões

  • Grupos de medidas

  • Modelos de mineração

  • Estruturas de mineração

  • Partições

Para controlar o processamento de objetos, o comando Process tem várias propriedades que podem ser definidas. O comando Process tem propriedades que controlam: quanto processamento será feito, quais objetos serão processados, se devem usar associações fora de linha, como lidar com erros e como gerenciar tabelas de write-back.

Especificando opções de processamento

A propriedade Type do comando Process especifica a opção de processamento a ser usada ao processar o objeto. Para obter mais informações sobre opções de processamento, consulte Opções e Configurações de Processamento (Analysis Services).

A tabela a seguir lista as constantes para a propriedade Type e os vários objetos que podem ser processados usando cada constante.

Valor do tipo Objetos aplicáveis
ProcessFull Cubo, banco de dados, dimensão, grupo de medidas, modelo de mineração, estrutura de mineração, partição
Processadd Dimensão, partição
ProcessUpdate Dimensão
ProcessIndexes Dimensão, cubo, grupo de medidas, partição
Processdata Dimensão, cubo, grupo de medidas, partição
ProcessDefault Cubo, banco de dados, dimensão, grupo de medidas, modelo de mineração, estrutura de mineração, partição
ProcessClear Cubo, banco de dados, dimensão, grupo de medidas, modelo de mineração, estrutura de mineração, partição
ProcessStructure Cubo, estrutura de mineração
ProcessClearStructureOnly Estrutura de mineração
ProcessScriptCache Cubo

Para obter mais informações sobre como processar objetos SQL Server Analysis Services, consulte Processando um modelo multidimensional (Analysis Services).

Especificando objetos a serem processados

A propriedade Object do comando Process contém o identificador de objeto do objeto a ser processado. Apenas um objeto pode ser especificado em um comando Process , mas o processamento de um objeto também processa objetos filho. Por exemplo, o processamento de um grupo de medidas em um cubo processará todas as partições desse grupo de medidas, enquanto que o processamento de um banco de dados processará todos os objetos, incluindo cubos, dimensões e estruturas de mineração, contidos nele.

Se você definir o atributo ProcessAffectedObjects do comando Process como true, qualquer objeto relacionado afetado pelo processamento do objeto especificado também será processado. Por exemplo, se uma dimensão for atualizada incrementalmente usando a opção de processamento ProcessUpdate no comando Processo, qualquer partição cujas agregações são invalidadas devido a membros serem adicionados ou excluídos também será processada por SQL Server Analysis Services se ProcessAffectedObjects estiver definida como true. Nesse caso, um único comando Process pode processar vários objetos em uma instância de SQL Server Analysis Services, mas SQL Server Analysis Services determina quais objetos além do único objeto especificado no comando Process também devem ser processados.

No entanto, você pode processar vários objetos, como dimensões, ao mesmo tempo usando vários comandos Process em um comando do Lote . As operações em lote fornecem um nível mais fino de controle para processamento serial ou paralelo de objetos em uma instância de SQL Server Analysis Services do que o uso do atributo ProcessAffectedObjects e permitem ajustar sua abordagem de processamento para bancos de dados de SQL Server Analysis Services maiores. Para obter mais informações sobre como executar operações em lote, consulte Executar operações em lote (XMLA).

Especificando associações fora de linha

Se o comando Process não estiver contido por um comando do Lote , opcionalmente você poderá especificar associações fora de linha nas propriedades Bindings, DataSource e DataSourceView do comando Process para que os objetos sejam processados. Associações fora de linha são referências a fontes de dados, exibições de fonte de dados e outros objetos nos quais a associação existe somente durante a execução do comando Process e que substituem quaisquer associações existentes associadas aos objetos que estão sendo processados. Se associações fora de linha não forem especificadas, serão usadas as associações atualmente associadas aos objetos a serem processados.

As associações fora de linha são usadas nas seguintes circunstâncias:

  • No processamento incremental de uma partição, no qual uma tabela de fatos alternativa ou um filtro da tabela de fatos existente deve ser especificado para garantir que as linhas não sejam contadas duas vezes.

  • Usar uma tarefa de fluxo de dados no Microsoft SQL Server Integration Services para fornecer dados durante o processamento de uma dimensão, modelo de mineração ou partição.

As associações fora de linha são descritas como parte da ASSL (Analysis Services Scripting Language). Para obter mais informações sobre associações fora de linha no ASSL, consulte Fontes de Dados e Associações (SSAS Multidimensional).

Atualizando partições incrementalmente

Atualizar incrementalmente uma partição já processada normalmente exige uma associação fora de linha, já que a associação especificada para a partição faz referência aos dados da tabela de fatos já agregados na partição. Ao atualizar incrementalmente uma partição já processada usando o comando Process, SQL Server Analysis Services executa as seguintes ações:

  • Cria uma partição temporária com uma estrutura idêntica à da partição a ser atualizada incrementalmente.

  • Processa a partição temporária usando a associação fora de linha especificada no comando Processo .

  • Mescla a partição temporária com a partição selecionada existente.

Para obter mais informações sobre a mesclagem de partições usando XMLA (XML for Analysis), consulte Mesclagem de partições (XMLA).

Manipulando erros de processamento

A propriedade ErrorConfiguration do comando Process permite que você especifique como lidar com erros encontrados durante o processamento de um objeto. Por exemplo, ao processar uma dimensão, SQL Server Analysis Services encontra um valor duplicado na coluna de chave do atributo de chave. Como as chaves de atributo devem ser exclusivas, SQL Server Analysis Services descarta os registros duplicados. Com base na propriedade KeyDuplicate de ErrorConfiguration, SQL Server Analysis Services poderia:

  • Ignorar o erro e continuar o processamento da dimensão.

  • Retorne uma mensagem informando SQL Server Analysis Services encontrou uma chave duplicada e continuar o processamento.

Há muitas condições semelhantes para as quais ErrorConfiguration fornece opções durante um comando Process .

Gerenciando tabelas de write-back

Se o comando Process encontrar uma partição habilitada para gravação ou um cubo ou grupo de medidas para essa partição, que ainda não esteja totalmente processada, talvez uma tabela de write-back ainda não exista para essa partição. A propriedade WritebackTableCreation do comando Process determina se SQL Server Analysis Services deve criar uma tabela de write-back.

Exemplos

Descrição

O exemplo a seguir processa totalmente o exemplo do Adventure Works DW Multidimensional 2012 SQL Server Analysis Services banco de dados.

Código

<Process xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">  
  <Object>  
    <DatabaseID>Adventure Works DW Multidimensional 2012</DatabaseID>  
  </Object>  
  <Type>ProcessFull</Type>  
  <WriteBackTableCreation>UseExisting</WriteBackTableCreation>  
</Process>  

Descrição

O exemplo a seguir processa incrementalmente a partição Internet_Sales_2004 no grupo de medidas Vendas pela Internet do cubo DW do Adventure Works no banco de dados de SQL Server Analysis Services exemplo multidimensional 2012 da Adventure Works DW. O comando Process está adicionando agregações para datas de pedido posteriores a 31 de dezembro de 2006 à partição usando uma associação de consulta fora de linha na propriedade Bindings do comando Process para recuperar as linhas da tabela de fatos das quais gerar agregações para adicionar à partição.

Código

<Process ProcessAffectedObjects="true" xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">  
  <Object>  
    <DatabaseID>Adventure Works DW Multidimensional 2012</DatabaseID>  
    <CubeID>Adventure Works DW</CubeID>  
    <MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>  
    <PartitionID>Internet_Sales_2006</PartitionID>  
  </Object>  
  <Bindings>  
    <Binding>  
      <DatabaseID>Adventure Works DW Multidimensional 2012</DatabaseID>  
      <CubeID>Adventure Works DW</CubeID>  
      <MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>  
      <PartitionID>Internet_Sales_2006</PartitionID>  
      <Source xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="QueryBinding">  
        <DataSourceID>Adventure Works DW</DataSourceID>  
        <QueryDefinition>  
          SELECT  
            [dbo].[FactInternetSales].[ProductKey],  
            [dbo].[FactInternetSales].[OrderDateKey],  
            [dbo].[FactInternetSales].[DueDateKey],  
            [dbo].[FactInternetSales].[ShipDateKey],   
            [dbo].[FactInternetSales].[CustomerKey],   
            [dbo].[FactInternetSales].[PromotionKey],  
            [dbo].[FactInternetSales].[CurrencyKey],  
            [dbo].[FactInternetSales].[SalesTerritoryKey],  
            [dbo].[FactInternetSales].[SalesOrderNumber],  
            [dbo].[FactInternetSales].[SalesOrderLineNumber],  
            [dbo].[FactInternetSales].[RevisionNumber],  
            [dbo].[FactInternetSales].[OrderQuantity],  
            [dbo].[FactInternetSales].[UnitPrice],  
            [dbo].[FactInternetSales].[ExtendedAmount],  
            [dbo].[FactInternetSales].[UnitPriceDiscountPct],  
            [dbo].[FactInternetSales].[DiscountAmount],  
            [dbo].[FactInternetSales].[ProductStandardCost],  
            [dbo].[FactInternetSales].[TotalProductCost],  
            [dbo].[FactInternetSales].[SalesAmount],  
            [dbo].[FactInternetSales].[TaxAmt],  
            [dbo].[FactInternetSales].[Freight],  
            [dbo].[FactInternetSales].[CarrierTrackingNumber],  
            [dbo].[FactInternetSales].[CustomerPONumber]  
          FROM [dbo].[FactInternetSales]  
          WHERE OrderDateKey > '1280'  
        </QueryDefinition>  
      </Source>  
    </Binding>  
  </Bindings>  
  <Type>ProcessAdd</Type>  
  <WriteBackTableCreation>UseExisting</WriteBackTableCreation>  
</Process>