Traitement d'objets (XMLA)
Dans Microsoft SQL Server 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 SQL Server Analysis Services, vous pouvez utiliser la commande Process. La commande Process peut traiter les objets suivants sur une instance SQL Server 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 a différentes propriétés qui peuvent être définies. La commande Process possède des propriétés qui contrôlent la quantité de traitement effectuée, les objets qui seront traités, s’il faut utiliser des liaisons hors ligne, comment gérer les erreurs et comment gérer les tables d’écriture différée.
Spécification d'options de traitement
La propriété Type de la commande Process spécifie l’option de traitement à utiliser lors du traitement de l’objet. Pour plus d’informations sur les options de traitement, consultez Options de traitement et paramètres (Analysis Services).
Le tableau suivant répertorie les constantes de la propriété Type et les différents objets qui peuvent être traités à l’aide de chaque constante.
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 SQL Server Analysis Services, consultez Traitement d’un modèle multidimensionnel (Analysis Services).
Spécification des objets à traiter
La propriété Object de la commande Process contient l’identificateur d’objet de l’objet à traiter. Un seul objet peut être spécifié dans une commande Process , mais le traitement d’un objet traite également tous 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 sur true, tout objet associé affecté par le traitement de l’objet spécifié est également traité. Par exemple, si une dimension est mise à jour de façon incrémentielle à l’aide de l’option de traitement ProcessUpdate dans la commande Process, toute partition dont les agrégations sont invalidées en raison des membres ajoutés ou supprimés est également traitée par SQL Server Analysis Services si ProcessAffectedObjects a la valeur true. Dans ce cas, une seule commande Process peut traiter plusieurs objets sur une instance SQL Server Analysis Services, mais SQL Server Analysis Services détermine quels objets en plus de l’objet unique spécifié dans la commande Process doivent également être traités.
Toutefois, vous pouvez traiter plusieurs objets, tels que des dimensions, en même temps à l’aide de plusieurs commandes de processus dans une commande Batch . Les opérations batch fournissent un niveau de contrôle plus fin pour le traitement série ou parallèle d’objets sur une instance SQL Server Analysis Services que l’utilisation de l’attribut ProcessAffectedObjects, et vous permettent de régler votre approche de traitement pour des bases de données SQL Server 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 commande Process n’est pas contenue par 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 que les objets soient traités. Les liaisons hors ligne sont des références aux sources de données, aux vues de source de données et à d’autres objets dans lesquels la liaison existe uniquement pendant l’exécution de la commande Process et qui remplacent les liaisons existantes associées aux objets en cours de traitement. 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 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 commande Process, SQL Server 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 ;
Traite la partition temporaire, à l’aide de 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 XML for Analysis ( XMLA), consultez Fusion de partitions (XMLA).
Gestion des erreurs de traitement
La propriété ErrorConfiguration de la commande Process 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, SQL Server Analysis Services rencontre une valeur en double dans la colonne clé de l’attribut clé. Étant donné que les clés d’attribut doivent être uniques, SQL Server Analysis Services ignore les enregistrements dupliqués. En fonction de la propriété KeyDuplicate de ErrorConfiguration, SQL Server Analysis Services pouvez :
ignorer l'erreur et poursuivre le traitement de la dimension ;
Retourne un message qui indique SQL Server Analysis Services rencontré une clé en double et continue le traitement.
Il existe de nombreuses conditions similaires pour lesquelles ErrorConfiguration fournit des options lors d’une commande Processus .
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 telle partition, qui n’est pas déjà entièrement traitée, une table d’écriture différée peut ne pas déjà exister pour cette partition. La propriété WritebackTableCreation de la commande Process détermine si SQL Server 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 Adventure Works DW multidimensionnel 2012 SQL Server Analysis Services.
Code
<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>
Description
L’exemple suivant traite de manière incrémentielle la partition Internet_Sales_2004 dans le groupe de mesures Internet Sales du cube Adventure Works DW dans l’exemple Adventure Works DW multidimensionnel 2012 SQL Server Analysis Services base de données. La commande Process ajoute des agrégations pour les dates de commande antérieures au 31 décembre 2006 à la partition à l’aide d’une liaison de requête hors ligne dans la propriété Bindings de la commande Process pour récupérer les lignes de table de faits à partir de laquelle générer des agrégations à ajouter à la partition.
Code
<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>