Processando objetos (XMLA)

No Microsoft SQL Server Analysis Services, o processamento é a etapa ou série de etapas que transformam os dados em informações para a análise comercial. 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 do Analysis Services, use o comando Process. O comando Process pode processar os seguintes objetos de uma instância do Analysis Services:

  • Cubos

  • 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, que objetos serão processados, se as associações fora de linha serão usadas, como manipular 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 no processamento do objeto. Para obter mais informações sobre as opções de processamento, consulte Opções e configurações de processamento.

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

Type valor

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 do Analysis Services, consulte Processando objetos do Analysis Services.

Especificando objetos a serem processados

A propriedade Object do comando Process contém o identificador do objeto a ser processado. Somente um objeto pode ser especificado em um comando Process, mas processar um objeto também processará qualquer objeto 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 verdadeiro, qualquer objeto relacionado afetado pelo processamento do objeto especificado também será processado. Por exemplo, se uma dimensão for atualizada de forma incremental usando a opção de processamento ProcessUpdate do comando Process, qualquer partição cuja agregação for invalidada por causa da adição ou da exclusão de membros também será processada pelo Analysis Services se ProcessAffectedObjects tiver sido definido como verdadeiro. Nesse caso, um único comando Process pode processar vários objetos de uma instância do Analysis Services, mas o Analysis Services determinará que objetos, além do objeto único especificado no comando Process, também serão processados.

Porém, você pode processar vários objetos, como as dimensões, ao mesmo tempo usando vários comandos Process dentro de um comando Batch. As operações em lotes oferece um nível mais refinado de controle para o processamento em série ou em paralelo de objetos em uma instância do Analysis Services do que a utilização do atributo ProcessAffectedObjects, além de permitir que você ajuste a sua abordagem de processamento para bancos de dados do Analysis Services maiores. Para obter mais informações sobre a execução de operações em lotes, consulte Executando operações em lote (XMLA).

Especificando associações fora de linha

Se o comando Process não estiver contido em um comando Batch, opcionalmente você poderá especificar associações fora de linha nas propriedades Bindings, DataSource e DataSourceView do comando Process para os objetos a serem processados. As 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 só existe durante a execução do comando Process e que substitui qualquer associação associada aos objetos 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.

  • Na utilização de uma tarefa de fluxo de dados no Microsoft SQL Server Integration Services para fornecer dados durante o processamento de uma dimensão, de um modelo de mineração ou de uma 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 na ASSL, consulte Fontes de dados e associações (Analysis Services - Dados Multidimensionais).

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 por meio do comando Process, o 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 Process.

  • 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 Mesclando partições (XMLA).

Manipulando erros de processamento

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

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

  • Retornar uma mensagem declarando que o Analysis Services encontrou uma chave duplicada e continuar o processamento.

Existem muitas condições semelhantes para as quais ErrorConfiguration oferece opções durante um comando Process.

Gerenciando tabelas de write-back

Se o comando Process encontrar uma partição de write-back, ou um cubo ou um grupo de medidas para essa partição, ela não será totalmente processada, pois pode ainda não haver uma tabela de write-back para ela. A propriedade WritebackTableCreation do comando Process determina se o Analysis Services dever criar uma tabela de write-back.

Exemplos

Descrição

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

Código

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

Descrição

O exemplo a seguir processa incrementalmente a partição Internet_Sales_2004 do grupo de medidas Internet Sales do cubo Adventure Works DW do banco de dados de exemplo Adventure Works DW do Analysis Services. O comando Process está adicionando agregações para datas de pedido posteriores a 31 de dezembro de 2006 à partição usando uma ligação de consulta for a de linha na propriedade Bindings do comando Process para recuperar as linhas da tabela de fatos a partir das quais as agregações a serem adicionadas à partição serão geradas.

Código

<Process ProcessAffectedObjects="true" xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
  <Object>
    <DatabaseID>Adventure Works DW</DatabaseID>
    <CubeID>Adventure Works DW</CubeID>
    <MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>
    <PartitionID>Internet_Sales_2006</PartitionID>
  </Object>
  <Bindings>
    <Binding>
      <DatabaseID>Adventure Works DW</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 &gt; '1280'
        </QueryDefinition>
      </Source>
    </Binding>
  </Bindings>
  <Type>ProcessAdd</Type>
  <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
</Process>