Traitement d'objets (XMLA)

Dans Microsoft SQL Server Analysis Services, le traitement est l'étape ou la série d'étapes qui transforme les données en informations destinées à l'analyse. Si le traitement varie selon le type d'objet, le traitement consiste toujours à transformer des données en informations.

Pour traiter un objet Analysis Services, vous pouvez utiliser la commande Process. La commande Process peut traiter les objets suivants dans une instance Analysis Services :

  • Cubes

  • Bases de données

  • Dimensions

  • Groupes de mesures

  • Modèles d'exploration de données

  • Structures d'exploration de données

  • Partitions

Pour contrôler le traitement des objets, la commande Process propose plusieurs propriétés définissables. Les propriétés de la commande Process permettent de contrôler les éléments suivants : portée du traitement, types d'objets à traiter, utilisation ou non de liaisons hors ligne, gestion des erreurs et gestion des tables d'écriture différée.

Spécification d'options de traitement

La propriété Type de la commande Process permet de spécifier l'option de traitement à utiliser lors du traitement de l'objet. Pour plus d'informations sur les options de traitement, consultez Options et paramètres de traitement.

Le tableau suivant répertorie les constantes associées à la propriété Type et les différents objets qui peuvent être traités avec chaque constant.

Valeur de Type

Objets applicables

ProcessFull

Cube, base de données, dimension, groupe de mesures, modèle d'exploration de données, structure d'exploration de données, partition

ProcessAdd

Dimension, partition

ProcessUpdate

Dimension

ProcessIndexes

Dimension, cube, groupe de mesures, partition

ProcessData

Dimension, cube, groupe de mesures, partition

ProcessDefault

Cube, base de données, dimension, groupe de mesures, modèle d'exploration de données, structure d'exploration de données, partition

ProcessClear

Cube, base de données, dimension, groupe de mesures, modèle d'exploration de données, structure d'exploration de données, partition

ProcessStructure

Cube, structure d'exploration de données

ProcessClearStructureOnly

Structure d'exploration de données

ProcessScriptCache

Cube

Pour plus d'informations sur le traitement des objets Analysis Services, consultez Traitement des objets Analysis Services.

Spécification des objets à traiter

La propriété Object de la commande Process contient l'identificateur de l'objet à traiter. Seul un objet peut être spécifié dans une commande Process, mais le traitement d'un objet porte également sur les objets enfants. Par exemple, le traitement d'un groupe de mesures dans un cube englobe toutes les partitions de ce groupe de mesures. De même, le traitement d'une base de données porte sur tous ses objets, notamment les cubes, les dimensions et les structures d'exploration de données contenus dans la base de données.

Si vous définissez l'attribut ProcessAffectedObjects de la commande Process à true, les objets connexes affectés par le traitement de l'objet spécifié sont égalements traités. Par exemple, si une dimension est mise à jour de façon incrémentielle par le biais de l'option de traitement ProcessUpdate de la commande Process, les partitions dont les agrégations sont invalidées en raison de l'ajout ou de la suppression de membres sont également traitées par Analysis Services si ProcessAffectedObjects est défini à true. Dans ce cas, une seule commande Process peut traiter plusieurs objets dans une même instance Analysis Services, mais c'est Analysis Services qui détermine quels sont les objets, outre l'objet unique spécifié dans la commande Process, qui doivent également être traités.

Toutefois, vous pouvez traiter simultanément plusieurs objets, tels que des dimensions, en utilisant plusieurs commandes Process au sein d'une commande Batch. Lorsqu'il s'agit de traiter les objets d'une instance Analysis Services en série ou en parallèle, les opérations de traitement par lot offrent un niveau de contrôle plus fin qu'en utilisant l'attribut ProcessAffectedObjects. Elle vous permettent en outre d'affiner votre approche de traitement pour les bases de données Analysis Services plus volumineuses. Pour plus d'informations sur la manière d'effectuer des opérations de traitement par lot, consultez Exécution d'opérations de traitement par lot (XMLA).

Spécification de liaisons hors ligne

Si la commande Process n'est pas contenue dans une commande Batch, vous pouvez éventuellement spécifier des liaisons hors ligne dans les propriétés Bindings, DataSource et DataSourceView de la commande Process pour les objets à traiter. Les liaisons hors lignes sont des références à des sources de données, des vues de source de données et d'autres objets dans lesquels elles existent seulement le temps de l'exécution de la commande Process. Elles remplacent les liaisons existantes associées aux objets traités. Si aucune liaison hors ligne n'est spécifiée, les liaisons actuellement associées aux objets à traiter sont utilisées.

Les liaisons hors ligne sont utilisées dans les circonstances suivantes :

  • traitement incrémentiel d'une partition dans laquelle une table de faits alternative ou un filtre appliqué à la table de faits existante doit être spécifié pour éviter que les lignes ne soient comptées deux fois ;

  • utilisation d'une tâche de flux de données dans Microsoft SQL Server Integration Services pour fournir des données lors du traitement d'une dimension, d'un modèle d'exploration de données ou d'une partition.

Les liaisons hors ligne sont décrites dans le cadre d'ASSL (Analysis Services Scripting Language). Pour plus d'informations sur les liaisons hors ligne dans le langage ASSL, consultez Sources de données et liaisons (Analysis Services – Données multidimensionnelles).

Mise à jour incrémentielle des partitions

La mise à jour incrémentielle d'une partition déjà traitée fait généralement appel à une liaison hors ligne, car la liaison spécifiée pour la partition fait référence à des données de table de faits déjà agrégées dans la partition. Lors de la mise à jour incrémentielle d'une partition déjà traitée par le biais de la commande Process, Analysis Services effectue les actions suivantes :

  • création d'une partition temporaire avec une structure identique à celle de la partition devant faire l'objet d'une mise à jour incrémentielle ;

  • traitement de la partition temporaire en utilisant la liaison hors ligne spécifiée dans la commande Process ;

  • fusion de la partition temporaire avec la partition sélectionnée existante.

Pour plus d'informations sur la fusion des partitions à l'aide de XMLA (XML for Analysis), consultez Fusion de partitions (XMLA).

Gestion des erreurs de traitement

La propriété ErrorConfiguration de la commande Process permet de préciser la façon dont les erreurs rencontrées lors du traitement d'un objet seront gérées. Par exemple, lors du traitement d'une dimension, Analysis Services rencontre une valeur en double dans la colonne de clé de l'attribut de clé. Les clés d'attribut devant être uniques, Analysis Services ignore les enregistrements en double. En fonction de la propriété KeyDuplicate de la propriété ErrorConfiguration, Analysis Services peut :

  • ignorer l'erreur et poursuivre le traitement de la dimension ;

  • retourner un message qui indique qu'Analysis Services a rencontré une clé en double et poursuivre le traitement.

Pendant l'exécution d'une commande Process, ErrorConfiguration peut proposer des options dans de nombreuses conditions similaires.

Gestion des tables d'écriture différée

Si la commande Process rencontre une partition activée en écriture (ou un cube ou un groupe de mesures pour une partition de ce type) qui n'est pas déjà traitée en intégralité, il se peut qu'il n'existe pas encore de table d'écriture différée pour cette partition. La propriété WritebackTableCreation de la commande Process détermine si Analysis Services doit créer une table d'écriture différée.

Exemples

Description

L'exemple suivant traite en entier l'exemple de base de données Analysis Services intitulé Adventure Works DW.

Code

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

Description

L'exemple suivant traite de façon incrémentielle la partition Internet_Sales_2004 dans le groupe de mesures Internet Sales du cube Adventure Works DW de l'exemple de base de données Analysis Services intitulé Adventure Works DW. La commande Process ajoute à la partition des agrégations pour les dates de commande postérieures au 31 décembre 2006 en utilisant une liaison de requête hors ligne dans la propriété Bindings de la commande Process de façon à récupérer les lignes de table de faits à partir desquelles sont générées les agrégations à ajouter à la partition.

Code

<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>