Transformation für Pivot

Die Transformation für Pivot macht aus einem normalisierten Dataset eine weniger normalisierte, aber kompaktere Version, indem die Eingabedaten nach einem Spaltenwert pivotiert werden. Beispielsweise weist ein normalisiertes Orders-Dataset, das den Kundennamen, das Produkt und die gekaufte Menge auflistet, in der Regel mehrere Zeilen für jeden Kunden auf, der mehrere Produkte gekauft hat. Dabei zeigt jede Zeile für den betreffenden Kunden Bestelldetails für ein anderes Produkt an. Durch Pivotieren des Datasets nach der Produktspalte kann mit der Transformation für Pivot ein Dataset mit einer einzigen Zeile pro Kunde ausgegeben werden. In dieser Zeile werden alle Einkäufe des Kunden aufgelistet, wobei die Produktnamen als Spaltennamen und die Menge als Wert in der Produktspalte angezeigt werden. Da nicht jeder Kunde jedes Produkt kauft, können viele Spalten NULL-Werte enthalten.

Wenn ein Dataset pivotiert wird, übernehmen Eingabespalten unterschiedliche Rollen am Pivotvorgang. Für die Beteiligung einer Spalte gibt es folgende Möglichkeiten:

  • Die Spalte wird unverändert an die Ausgabe übergeben. Viele Eingabezeilen können nur eine Ausgabezeile ergeben, weshalb die Transformation nur den ersten Eingabewert für die Spalte kopiert.

  • Die Spalte dient als Schlüssel oder Teil des Schlüssels, mit dem ein Recordset definiert wird.

  • Die Spalte definiert den Pivotvorgang. Die Werte in dieser Spalte sind Spalten im pivotierten Dataset zugeordnet.

  • Die Spalte enthält Werte, die den Spalten hinzugefügt werden, die beim Pivotieren erstellt werden.

Im folgenden Diagramm wird ein Dataset vor dem Pivotieren der Daten nach der Product-Spalte angezeigt.

Dataset nach dem Pivotieren

Im folgenden Diagramm wird ein Dataset nach dem Pivotieren der Daten nach der Product-Spalte angezeigt.

Dataset vor dem Pivotieren

Die Eingabedaten müssen in der Pivotspalte sortiert sein, damit die Daten effizient pivotiert werden, das heißt, dass möglichst wenige Datensätze im Ausgabedataset erstellt werden. Wenn die Daten nicht sortiert sind, kann es sein, dass die Transformation für Pivot mehrere Datensätze für jeden Wert im festgelegten Schlüssel generiert, bei dem es sich um die Spalte handelt, die die festgelegte Mitgliedschaft definiert. Wenn z. B. das Dataset nach der Name-Spalte pivotiert wird, aber die Namen nicht sortiert sind, könnte das Ausgabedataset pro Kunde mehrere Zeilen aufweisen. Denn ein Pivotvorgang wird jedes Mal ausgeführt, wenn der Wert in der Name-Spalte geändert wird.

Die Eingabedaten können doppelte Zeilen enthalten. Diese bewirken, dass die Transformation für Pivot einen Fehler erzeugt. "Doppelte Zeilen" bedeutet Zeilen, die in den festgelegten Schlüsselspalten und Pivotspalten die gleichen Werte aufweisen. Wenn Sie z. B. das Dataset verwenden, bevor die Daten nach der Product-Spalte pivotiert werden, wie im Diagramm gezeigt, und eine Zeile mit Kate in der Cust-Spalte und Soda in der Product-Spalte hinzufügen, würden diese doppelten Werte bewirken, dass die Transformation für Pivot einen Fehler erzeugt. Dies erfolgt unabhängig von der Menge in der Qty-Spalte. Zur Vermeidung von Fehlern können Sie entweder die Transformation so konfigurieren, dass Fehlerzeilen in eine Fehlerausgabe umgeleitet werden, oder Sie können Werte vorab aggregieren, um sicherzustellen, dass keine doppelten Zeilen vorhanden sind. Beispielsweise können Sie im Beispieldataset die Summe der Werte in der Qty-Spalte nach Kunde und Produkt bilden.

Die Transformation für Pivot definiert mithilfe der Eigenschaften in den Eingabe- und Ausgabespalten den Pivotvorgang.

Die Transformation für Pivot schließt die benutzerdefinierte Eigenschaft PivotKeyValue ein. Diese Eigenschaft kann beim Laden des Pakets mithilfe eines Eigenschaftsausdrucks aktualisiert werden. Weitere Informationen finden Sie unter Referenzinformationen zu SQL Server Integration Services-Ausdrücken, Verwendung von Eigenschaftsausdrücken in Paketen und Benutzerdefinierte Eigenschaften von Transformationen.

Diese Transformation weist eine Eingabe, eine reguläre Ausgabe und eine Fehlerausgabe auf.

Konfigurieren des Stichprobendatasets

Das im Diagramm dargestellte Stichprobendataset wurde wie folgt konfiguriert: Die PivotUsage-Eigenschaft der Cust-Spalte wurde auf 1 festgelegt, um anzuzeigen, dass es sich um eine festgelegte Schlüsselspalte handelt; die PivotUsage-Eigenschaft der Product-Eingabespalte wurde auf 2 festgelegt, um anzuzeigen, dass für jedes Produkt eine Spalte erstellt werden muss; die PivotUsage-Eigenschaft der Qty-Eingabespalte wurde auf 3 festgelegt, um anzuzeigen, dass der Pivotspalte Mengenwerte hinzugefügt werden.

Für die Transformationsausgabe wurden sechs Spalten konfiguriert. Die Spalten, die im Dialogfeld Erweiterter Editor hinzugefügt werden können, wurden Cust, Ham, Soda, Milk, Beer und Chips benannt. Die PivotKeyValue-Eigenschaft der Ham-Spalte wurde auf Ham festgelegt, um anzuzeigen, dass die Transformation in der Eingabespalte nach diesem Wert suchen soll. Entsprechend wurde die PivotKeyValue-Eigenschaft der Soda-Spalte auf Soda festgelegt usw.

Spalten in der Transformationseingabe wurden anschließend Spalten in der Ausgabe zugeordnet.

Für die SourceColumn-Eigenschaft der Cust-Spalte wurde die Verwendung des Herkunftsbezeichners der Cust-Eingabespalte konfiguriert. Für die SourceColumn-Eigenschaften der Ham-, Soda-, Milk-, Beer- und Chips-Spalten wurde die Verwendung des Herkunftsbezeichners der Qty-Eingabespalte konfiguriert. Dies können Sie auch konfigurieren, indem Sie die SourceColumn-Eigenschaft der Ham-, Soda-, Milk-, Beer- und Chips-Spalten auf -1 festlegen. Dadurch wird der Wert True anstelle des Datenwerts eingefügt. Beispielsweise würde die Beer-Spalte anstelle der Werte 12 und 24 dann den Wert True enthalten, um nicht die gekauft Menge, sondern nur die Tatsache, dass der Kunde das Produkt gekauft hat, anzuzeigen.

Die Zeilen in der Transformationsausgabe enthalten die Werte aus den Eingabespalten Cust und Qty.

Pivotoptionen

Sie legen für die PivotUsage-Eigenschaft der Eingabespalten fest, dass die Rolle angegeben wird, die jede Spalte beim Pivotvorgang ausführt. Die gültigen Werte für PivotUsage sind 0, 1, 2 und 3.

In der folgenden Tabelle werden die PivotUsage-Optionen beschrieben.

Option

Beschreibung

0

Die Spalte ist nicht pivotiert, und die Spaltenwerte werden über die Transformationsausgabe übergeben.

1

Die Spalte ist Teil des festgelegten Schlüssels, der mindestens eine Zeile als Teil eines Datasets identifiziert. Alle Eingabezeilen mit demselben festgelegten Schlüssel werden zu einer einzigen Ausgabezeile zusammengefasst.

2

Die Spalte ist eine Pivotspalte. Mindestens eine Spalte wird von jedem Spaltenwert erstellt.

3

Die Werte aus dieser Spalte werden in Spalten platziert, die als Ergebnis des Pivotvorgangs erstellt werden.

Konfigurieren der Transformation für Pivot

Eigenschaften können Sie mit dem SSIS-Designer oder programmgesteuert festlegen.

Klicken Sie auf eines der folgenden Themen, um weitere Informationen zu den Eigenschaften zu erhalten, die Sie im Dialogfeld Erweiterter Editor oder programmgesteuert festlegen können:

Weitere Informationen zum Festlegen der Eigenschaften finden Sie unter Vorgehensweise: Festlegen der Eigenschaften einer Datenflusskomponente.

Integration Services (kleines Symbol) Bleiben Sie mit Integration Services auf dem neuesten Stand

Die neuesten Downloads, Artikel, Beispiele und Videos von Microsoft sowie ausgewählte Lösungen aus der Community finden Sie auf der Integration Services-Seite von MSDN oder TechNet:

Abonnieren Sie die auf der Seite verfügbaren RSS-Newsfeeds, um automatische Benachrichtigungen zu diesen Aktualisierungen zu erhalten.