Verarbeiten von Objekten (XMLA)
In Microsoft SQL Server Analysis Services ist die Verarbeitung der Schritt oder die Reihe von Schritten, die Daten in Informationen für die Geschäftsanalyse umwandeln. Die Verarbeitung ist je nach Objekttyp unterschiedlich, aber immer Teil einer Umwandlung von Daten in Informationen.
Um ein Analysis Services-Objekt zu verarbeiten, können Sie den Befehl Process verwenden. Der Process
Befehl kann die folgenden Objekte in einer Analysis Services-instance verarbeiten:
Cubes
Datenbanken
Dimensionen
Measuregruppen
Miningmodelle
Miningstrukturen
Partitionen
Um die Verarbeitung von Objekten zu kontrollieren, verfügt der Befehl Process
über verschiedene Eigenschaften, die festgelegt werden können. Der Process
-Befehl verfügt über Eigenschaften, die kontrollieren, wie viel Verarbeitung stattfinden wird, welche Objekte verarbeitet werden, ob Out-of-Line-Bindungen zum Einsatz kommen, wie Fehler gehandhabt und wie Rückschreibetabellen verwaltet werden.
Angeben von Verarbeitungsoptionen
Die Type-Eigenschaft des Process
Befehls gibt die Verarbeitungsoption an, die beim Verarbeiten des Objekts verwendet werden soll. Weitere Informationen zu Verarbeitungsoptionen finden Sie unter Verarbeitungsoptionen und -einstellungen (Analysis Services).
In der folgenden Tabelle werden die Konstanten der Eigenschaft Type
und die verschiedenen Objekte, die über die Konstanten verarbeitet werden können, aufgelistet.
Type -Wert |
Anwendbare Objekte |
---|---|
ProcessFull | Cube, Datenbank, Dimension, Measuregruppe, Miningmodell, Miningstruktur, Partition |
ProcessAdd | Dimension, Partition |
ProcessUpdate | Dimension |
ProcessIndexes | Dimension, Cube, Measuregruppe, Partition |
ProcessData | Dimension, Cube, Measuregruppe, Partition |
ProcessDefault | Cube, Datenbank, Dimension, Measuregruppe, Miningmodell, Miningstruktur, Partition |
ProcessClear | Cube, Datenbank, Dimension, Measuregruppe, Miningmodell, Miningstruktur, Partition |
ProcessStructure | Cube, Miningstruktur |
ProcessClearStructureOnly | Miningstruktur |
ProcessScriptCache | Cube |
Weitere Informationen zur Verarbeitung von Analysis Services-Objekten finden Sie unter Mehrdimensionale Modellobjektverarbeitung.
Angeben zu verarbeitender Objekte
Die Object-Eigenschaft des Process
Befehls enthält den Objektbezeichner des zu verarbeitenden Objekts. In einem Process
-Befehl kann nur ein Objekt angegeben werden. Allerdings führt die Verarbeitung eines Objekts auch zur Verarbeitung aller untergeordneten Objekte. Beispielsweise werden bei der Verarbeitung einer Measuregruppe in einem Cube alle Partitionen für diese Measuregruppe verarbeitet, während bei der Verarbeitung einer Datenbank alle Objekte, die in der Datenbank enthalten sind, verarbeitet werden, einschließlich Cubes, Dimensionen und Miningstrukturen.
Wenn Sie das ProcessAffectedObjects
-Attribut des Process
-Befehls auf True setzen, werden alle verwandten Objekte, die von der Verarbeitung des angegebenen Objekts betroffen sind, ebenfalls verarbeitet. Wenn beispielsweise eine Dimension mithilfe der ProcessUpdate-Verarbeitungsoption im Process
Befehl inkrementell aktualisiert wird, wird jede Partition, deren Aggregationen aufgrund des Hinzufügens oder Löschens von Elementen ungültig gemacht werden, auch von Analysis Services verarbeitet, wenn ProcessAffectedObjects
auf true festgelegt ist. In diesem Fall kann ein einzelner Process
Befehl mehrere Objekte auf einer Analysis Services-instance verarbeiten, aber Analysis Services bestimmt, welche Objekte neben dem einzelnen im Process
Befehl angegebenen Objekt auch verarbeitet werden müssen.
Allerdings können Sie über die Process
-Befehle in einem Batch
-Befehl mehrere Objekte, einschließlich Dimensionen, gleichzeitig verarbeiten. Batchvorgänge bieten eine genauere Steuerungsebene für die serielle oder parallele Verarbeitung von Objekten in einer Analysis Services-instance als die Verwendung des ProcessAffectedObjects
Attributs und ermöglichen es Ihnen, Ihren Verarbeitungsansatz für größere Analysis Services-Datenbanken zu optimieren. Weitere Informationen zum Ausführen von Batchvorgängen finden Sie unter Ausführen von Batchvorgängen (XMLA).
Angeben von Out-of-Line-Bindungen
Wenn der Process
Befehl nicht in einem Batch
Befehl enthalten ist, können Sie optional Out-of-Line-Bindungen in den Eigenschaften Bindungen, DataSource und DataSourceView des Process
Befehls für die zu verarbeitenden Objekte angeben. Out-of-Line-Bindungen sind Verweise auf Datenquellen, Datenquellensichten und andere Objekte, in denen die Bindungen nur während der Ausführung des Process
-Befehls existieren, und die vorhandene Bindungen, die dem zu verarbeitenden Objekt zugeordnet sind, überschreiben. Wenn keine Out-of-Line-Bindungen angegeben sind, werden die Bindungen verwendet, die aktuell dem zu verarbeitenden Objekt zugeordnet sind.
Out-of-Line-Bindungen werden in den folgenden Situationen verwendet:
Inkrementelle Verarbeitung einer Partition, bei der eine alternative Faktentabelle oder ein Filter auf der vorhandenen Faktentabelle angegeben sein muss, um sicherzustellen, dass die Zeilen nicht zweimal gezählt werden.
Verwenden eines Datenflusstasks in Microsoft SQL Server Integration Services zum Bereitstellen von Daten während der Verarbeitung einer Dimension, eines Miningmodells oder einer Partition.
Out-of-Line-Bindungen werden als Teil der Analysis Services Scripting Language (ASSL) beschrieben. Weitere Informationen zu out-of-line-Bindungen in ASSL finden Sie unter Datenquellen und Bindungen (SSAS Multidimensional).
Inkrementelles Update von Partitionen
Das inkrementelle Update einer bereits verarbeiteten Partition erfordert in der Regel eine Out-of-Line-Bindung, da die für die Partition angegebene Bindung auf Faktentabellendaten verweist, die bereits in der Partition aggregiert wurden. Beim inkrementellen Aktualisieren einer bereits verarbeiteten Partition mithilfe des Process
Befehls führt Analysis Services die folgenden Aktionen aus:
Erstellt eine temporäre Partition mit einer Struktur, die mit der Struktur der Partition identisch ist, die inkrementell aktualisiert werden soll.
Verarbeitet die temporäre Partition über die im
Process
-Befehl angegebene Out-of-Line-Bindung.Führt die temporäre Partition mit der vorhandenen, ausgewählten Partition zusammen.
Weitere Informationen zum Zusammenführen von Partitionen mithilfe von XML for Analysis (XMLA) finden Sie unter Zusammenführen von Partitionen (XMLA).
Behandeln von Verarbeitungsfehlern
Mit der ErrorConfiguration-Eigenschaft des Process
Befehls können Sie angeben, wie Fehler behandelt werden, die beim Verarbeiten eines Objekts auftreten. Bei der Verarbeitung einer Dimension stößt Analysis Services beispielsweise auf einen doppelten Wert in der Schlüsselspalte des Schlüsselattributes. Da Attributschlüssel eindeutig sein müssen, verwirft Analysis Services die doppelten Datensätze. Basierend auf der KeyDuplicate-Eigenschaft von ErrorConfiguration
könnte Analysis Services:
den Fehler ignorieren und die Verarbeitung der Dimension fortsetzen;
Gibt eine Meldung zurück, die besagt, dass Analysis Services einen doppelten Schlüssel gefunden hat, und fahren Sie mit der Verarbeitung fort.
Es gibt viele ähnliche Bedingungen, für die ErrorConfiguration
Optionen während eines Process
-Befehls bereitstellt.
Verwalten von Rückschreibetabellen
Wenn der Process
-Befehl eine Partition mit Schreibzugriff oder einen Cube oder eine Measuregruppe für eine derartige Partition entdeckt, die noch nicht vollständig verarbeitet ist, besteht möglicherweise noch keine Rückschreibetabelle für diese Partition. Die WritebackTableCreation-Eigenschaft des Process
Befehls bestimmt, ob Analysis Services eine Rückschreibtabelle erstellen soll.
Beispiele
BESCHREIBUNG
Im folgenden Beispiel wird die Adventure Works DW Multidimensional 2012 Analysis Services-Beispieldatenbank vollständig verarbeitet.
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>
BESCHREIBUNG
Im folgenden Beispiel wird die Internet_Sales_2004 Partition in der Measuregruppe Internet Sales des Adventure Works DW-Cubes in der Analysis Services-Beispieldatenbank Adventure Works DW Multidimensional 2012 inkrementell verarbeitet. Der Process
Befehl fügt Der Partition Aggregationen für Bestelldaten nach dem 31. Dezember 2006 hinzu, indem er eine out-of-line-Abfragebindung in der Bindings
Eigenschaft des Process
Befehls verwendet, um die Faktentabellenzeilen abzurufen, aus denen Aggregationen generiert werden sollen, die der Partition hinzugefügt werden sollen.
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>