Share via


Verarbeiten von Objekten (XMLA)

In MicrosoftSQL ServerAnalysis Services bezieht sich die Verarbeitung auf den Schritt oder die Schritte, durch die Daten in Informationen für Geschäftsanalysen umgewandelt werden. 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 Process-Befehl verwenden. Der Befehl Process kann die folgenden Objekte auf einer Analysis Services-Instanz 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

Beim Verarbeiten des Objekts gibt die Eigenschaft Typ des Befehls Process die zu verwendende Verarbeitungsoption an. Weitere Informationen zu Verarbeitungsoptionen finden Sie unter Verarbeitungsoptionen und -einstellungen.

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 über die Verarbeitung von Analysis Services-Objekten finden Sie unter Verarbeiten von Analysis Services-Objekten.

Angeben zu verarbeitender Objekte

Die Eigenschaft Objekt des Befehls Process 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. Wird beispielsweise eine Dimension über die Verarbeitungsoption ProcessUpdate im Befehl Process inkrementell aktualisiert, wird jede Partition, deren Aggregationen durch Hinzufügen oder Löschen von Elementen für ungültig erklärt wurde, auch von Analysis Services verarbeitet, wenn ProcessAffectedObjects auf True gesetzt ist. In diesem Fall kann ein einzelner Process-Befehl mehrere Objekte auf einer Analysis Services-Instanz verarbeiten, aber Analysis Services bestimmt, welche Objekte neben dem einzelnen, im Process-Befehl angegebenen Objekt ebenfalls 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 präzisere Kontrolle über die serielle oder parallele Verarbeitung von Objekten auf einer Analysis Services-Instanz, als es die Verwendung des ProcessAffectedObjects-Attributs tut, und ermöglicht es Ihnen, Ihren Verarbeitungsansatz für größere Analysis Services-Datenbanken zu optimieren. Weitere Informationen über das Durchführen von Batchvorgängen finden Sie unter Ausführen von Batchvorgängen (XMLA).

Angeben von Out-of-Line-Bindungen

Ist der Process-Befehl nicht in einem Batch-Befehl enthalten, können Sie optional Out-of-Line-Bindungen in den Eigenschaften Bindings, DataSource und DataSourceView des Process-Befehls für das zu verarbeitende Objekt 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.

  • Verwendung einer Datenflusstask in MicrosoftSQL ServerIntegration Services zur Bereitstellung 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 über Out-of-Line-Bindungen in ASSL finden Sie unter Datenquellen und -bindungen (Analysis Services - Mehrdimensionale Daten).

Inkrementelle Aktualisierung von Partitionen

Die inkrementelle Aktualisierung 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. Bei der inkrementellen Aktualisierung einer bereits verarbeiteten Partition über den Befehl Process 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 über das Zusammenführen von Partitionen über XML for Analysis (XMLA) finden Sie unter Zusammenführen von Partitionen (XMLA).

Behandeln von Verarbeitungsfehlern

Über die ErrorConfiguration-Eigenschaft des Process-Befehls können Sie angeben, wie Fehler behandelt werden, die während der Verarbeitung eines Objekts aufgetreten sind. Beispielsweise ermittelt Analysis Services bei der Verarbeitung einer Dimension einen doppelten Wert in der Schlüsselspalte des Schlüsselattributs. Da Attributschlüssel eindeutig sein müssen, verwirft Analysis Services die doppelten Datensätze. Basierend auf der Eigenschaft KeyDuplicate von ErrorConfiguration könnte Analysis Services:

  • den Fehler ignorieren und die Verarbeitung der Dimension fortsetzen;

  • eine Meldung ausgeben, die besagt, dass Analysis Services einen doppelten Schlüssel ermittelt hat und die Verarbeitung fortgeführt wird.

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 Befehls Process bestimmt, ob Analysis Services eine Rückschreibetabelle erstellen sollte.

Beispiele

Beschreibung

Im folgenden Beispiel wird die Beispiel-Analysis Services-Datenbank Adventure Works DW vollständig verarbeitet.

Code

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

Beschreibung

Im folgenden Beispiel wird die Partition Internet_Sales_2004 in der Measuregruppe Internet Sales des Cubes Adventure Works DW in der Beispiel-Analysis Services-Datenbank Adventure Works DW inkrementell verarbeitet. Der Process-Befehl fügt Aggregationen für Bestelldaten nach dem 31. Dezember 2004 zur Partition hinzu, indem eine Out-of-Line-Abfragebindung in der Eigenschaft Bindings des Befehls Process verwendet wird, um die Faktentabellenzeilen abzurufen, aus denen Aggregationen generiert werden, die der Partition hinzugefügt werden.

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_2004</PartitionID>
  </Object>
  <Bindings>
    <Binding>
      <DatabaseID>Adventure Works DW</DatabaseID>
      <CubeID>Adventure Works DW</CubeID>
      <MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>
      <PartitionID>Internet_Sales_2004</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>