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>