Partager via


Traitement d'objets (XMLA)

Dans Microsoft SQL Server Analysis Services, le traitement est l’étape ou la série d’étapes qui transforment les données en informations pour l’analyse métier. 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 Process commande peut traiter les objets suivants sur un instance Analysis Services :

  • Cubes

  • Bases de données

  • Dimensions

  • les 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 Process commande spécifie 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 (Analysis Services).

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 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
ProcessusAjouter 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 d’objets de modèle multidimensionnel.

Spécification des objets à traiter

La propriété Object de la Process commande contient l’identificateur d’objet 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 manière incrémentielle à l’aide de l’option de traitement ProcessUpdate dans la Process commande, toute partition dont les agrégations sont invalidées en raison de l’ajout ou de la suppression de membres est également traitée par Analysis Services si ProcessAffectedObjects a la valeur true. Dans ce cas, une commande unique Process peut traiter plusieurs objets sur un instance Analysis Services, mais Analysis Services détermine quels objets en plus de l’objet unique spécifié dans la Process commande 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. Les opérations par lots fournissent un niveau de contrôle plus fin pour le traitement en série ou en parallèle d’objets sur un instance Analysis Services que l’utilisation de l’attributProcessAffectedObjects, et vous permettent d’ajuster votre approche de traitement pour les bases de données Analysis Services plus volumineuses. Pour plus d’informations sur l’exécution d’opérations par lots, consultez Exécution d’opérations par lots (XMLA).

Spécification de liaisons hors ligne

Si la Process commande n’est pas contenue dans une Batch commande, vous pouvez éventuellement spécifier des liaisons hors ligne dans les propriétés Bindings, DataSource et DataSourceView de la Process commande 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 ;

  • L’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 ASSL, consultez Sources de données et liaisons (multidimensionnel SSAS).

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 à l’aide de la Process commande, 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 de partitions à l’aide de XMLA (XMLA), consultez Fusion de partitions (XMLA).

Gestion des erreurs de traitement

La propriété ErrorConfiguration de la Process commande vous permet de spécifier comment gérer les erreurs rencontrées lors du traitement d’un objet. Par exemple, lors du traitement d’une dimension, Analysis Services rencontre une valeur dupliquée dans la colonne clé de l’attribut key. Étant donné que les clés d’attribut doivent être uniques, Analysis Services ignore les enregistrements en double. En fonction de la propriété KeyDuplicate de ErrorConfiguration, Analysis Services peut :

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

  • Retourne un message indiquant qu’Analysis Services a rencontré une clé en double et continuez le traitement.

Pendant l'exécution d'une commande ErrorConfiguration, Process 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 Process commande détermine si Analysis Services doit créer une table d’écriture différée.

Exemples

Description

L’exemple suivant traite entièrement l’exemple de base de données Analysis Services Adventure Works DW 2012.

Code

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

Description

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

Code

<Process ProcessAffectedObjects="true" xmlns="https://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>