Transformation für das Aggregieren
Die Transformation für das Aggregieren wendet Aggregatfunktionen, wie z. B. Average, auf Spaltenwerte an und kopiert die Ergebnisse in die Transformationsausgabe. Neben Aggregatfunktionen stellt diese Transformation die GROUP BY-Klausel bereit, mit der Sie Gruppen für das Aggregieren angeben können.
Die Transformation für das Aggregieren konfigurieren Sie auf der Transformations-, Ausgabe- und Spaltenebene.
Auf der Transformationsebene konfigurieren Sie die Transformation für das Aggregieren auf Leistung, indem Sie die folgenden Werte angeben:
Die Anzahl der Gruppen, die als Ergebnis eines GROUP BY-Vorgangs erwartet werden.
Die Anzahl der unterschiedlichen Werte, die als Ergebnis eines COUNT DISTINCT-Vorgangs erwartet werden.
Der Prozentsatz, um den der Arbeitsspeicher während der Aggregation erweitert werden kann.
Für die Transformation für das Aggregieren kann auch konfiguriert werden, dass anstelle eines Fehlers eine Warnung generiert wird, wenn der Wert eines Divisors null ist.
Auf der Ausgabeebene können Sie die Transformation für das Aggregieren auf Leistung konfigurieren, indem Sie die Anzahl der Gruppen angeben, die als Ergebnis eines GROUP BY-Vorgangs erwartet werden. Die Transformation für das Aggregieren unterstützt mehrere Ausgaben, und jede kann unterschiedlich konfiguriert werden.
Auf der Spaltenebene geben Sie die folgenden Werte an:
Die von der Spalte durchgeführte Aggregation.
Die Vergleichsoptionen der Aggregation.
Sie können die Transformation für das Aggregieren auf Leistung auch konfigurieren, indem Sie diese Werte angeben:
Die Anzahl der Gruppen, die als Ergebnis eines GROUP BY-Vorgangs für die Spalte erwartet werden.
Die Anzahl der unterschiedlichen Werte, die als Ergebnis eines COUNT DISTINCT-Vorgangs für die Spalte erwartet werden.
Sie können Spalten auch als IsBig angeben, wenn eine Spalte große numerische Werte oder numerische Werte mit hoher Genauigkeit enthält.
Die Transformation für das Aggregieren ist asynchron. Das heißt, sie verwendet und veröffentlicht Daten nicht zeilenweise. Vielmehr verwendet sie das gesamte Rowset, führt Gruppierungen und Aggregationen aus und veröffentlicht dann die Ergebnisse.
Diese Transformation übergibt keine Spalten, sondern erstellt im Datenfluss für die veröffentlichten Daten neue Spalten. Nur die Eingabespalten, für die Aggregatfunktionen gelten, oder die Eingabespalten, die die Transformation zum Gruppieren verwendet, werden in die Transformationsausgabe kopiert. Angenommen, eine Transformation für das Aggregieren weist drei Spalten auf: CountryRegion, City und Population. Die Transformation gruppiert nach der CountryRegion-Spalte und wendet die Sum-Funktion auf die Population-Spalte an. Deshalb ist in der Ausgabe die City-Spalte nicht enthalten.
Sie können der Transformation für das Aggregieren auch mehrere Ausgaben hinzufügen und jede Aggregation an eine andere Ausgabe weiterleiten. Wendet beispielsweise die Transformation für das Aggregieren die Funktionen Sum und Average an, kann jede Aggregation an eine andere Ausgabe geleitet werden.
Auf eine einzelne Eingabespalte können mehrere Aggregationen angewendet werden. Wenn Sie z. B. die Summen und Mittelwerte für eine Eingabespalte mit dem Namen Sales haben wollen, können Sie die Transformation so konfigurieren, dass sie die Sum-Funktion und die Average-Funktion auf die Sales-Spalte anwendet.
Die Transformation für das Aggregieren weist je eine Eingabe und mindestens eine Ausgabe auf. Eine Fehlerausgabe wird nicht unterstützt.
Vorgänge
Die Transformation für das Aggregieren unterstützt die folgenden Vorgänge.
Vorgang |
Beschreibung |
---|---|
Group By |
Unterteilt Datasets in Gruppen. Spalten eines beliebigen Datentyps können für das Gruppieren verwendet werden. Weitere Informationen finden Sie unter GROUP BY (Transact-SQL). |
Sum |
Summiert die Werte in einer Spalte. Nur Spalten mit numerischen Datentypen können summiert werden. Weitere Informationen finden Sie unter SUM (Transact-SQL). |
Average |
Gibt den Mittelwert der Werte in einer Spalte zurück. Nur für Spalten mit numerischen Datentypen kann der Mittelwert berechnet werden. Weitere Informationen finden Sie unter AVG (Transact-SQL). |
Count |
Gibt die Anzahl von Einträgen in einer Gruppe zurück. Weitere Informationen finden Sie unter COUNT (Transact-SQL). |
Count distinct |
Gibt die Anzahl von eindeutigen Werten ungleich NULL in einer Gruppe zurück. Weitere Informationen finden Sie unter Entfernen von Duplikaten mit DISTINCT. |
Minimum |
Gibt den kleinsten Wert in einer Gruppe zurück. Weitere Informationen finden Sie unter MIN (Transact-SQL). Im Gegensatz zur MIN-Funktion von Transact-SQL kann dieser Vorgang nur mit numerischen, Datums- und Zeitdatentypen verwendet werden. |
Maximum |
Gibt den größten Wert in einer Gruppe zurück. Weitere Informationen finden Sie unter MAX (Transact-SQL). Im Gegensatz zur MAX-Funktion von Transact-SQL kann dieser Vorgang nur mit numerischen, Datums- und Zeitdatentypen verwendet werden. |
Die Transformation für das Aggregieren behandelt NULL-Werte auf die gleiche Weise wie das relationale Datenbankmodul von SQL Server. Dieses Verhalten ist im SQL-92-Standard definiert. Dabei gelten die folgenden Regeln:
In einer GROUP BY-Klausel werden NULL-Werte wie andere Spaltenwerte behandelt. Enthält die Gruppierungsspalte mehrere NULL-Werte, werden diese in einer Gruppe zusammengefasst.
In den Funktionen COUNT (Spaltenname) und COUNT (DISTINCT-Spaltenname) werden NULL-Werte ignoriert. Das Ergebnis schließt Zeilen mit NULL-Werten in der benannten Spalte aus.
In der COUNT (*)-Funktion werden alle Zeilen gezählt, auch Zeilen mit NULL-Werten.
Verarbeiten großer Zahlen in Aggregaten
Eine Spalte kann numerische Werte enthalten, die aufgrund ihres großen Werts oder der Anforderungen an die Genauigkeit speziell berücksichtigt werden müssen. Die Transformation für das Aggregieren beinhaltet die IsBig-Eigenschaft, die Sie für Ausgabespalten festlegen können, um eine spezielle Handhabung großer oder sehr genauer Zahlen aufzurufen. Falls ein Spaltenwert u. U. 4 Milliarden überschreitet oder eine Genauigkeit über den float-Datentyp hinaus erforderlich ist, sollte IsBig auf 1 festgelegt werden.
Das Festlegen der IsBig-Eigenschaft auf 1 hat folgende Auswirkungen auf die Ausgabe der Transformation für das Aggregieren:
Der DT_R8-Datentyp wird anstelle des DT_R4-Datentyps verwendet.
Count-Ergebnisse werden als DT_UI8-Datentyp gespeichert.
Distinct Count-Ergebnisse werden als DT_UI4-Datentyp gespeichert.
Hinweis |
---|
Für Spalten, die für die Vorgänge GROUP BY, Maximum oder Minimum verwendet werden, können Sie IsBig nicht auf 1 festlegen. |
Überlegungen zur Leistung
Die Transformation für das Aggregieren enthält Eigenschaften, die Sie festlegen können, um die Leistung der Transformation zu optimieren.
Wenn Sie einen GROUP BY-Vorgang ausführen, legen Sie die Keys-Eigenschaft oder die KeysScale-Eigenschaft für die Komponente und die Komponentenausgaben fest. Mithilfe von Keys können Sie die genaue Anzahl von Schlüssel festlegen, die von der Transformation behandelt werden sollen. (In diesem Kontext bezeichnet Keys die Anzahl der Gruppen, die als Ergebnis eines GROUP BY-Vorgangs erwartet werden.) Mit KeysScale können Sie eine ungefähre Anzahl von Schlüsseln angeben. Wenn Sie einen entsprechenden Wert für Keys oder KeyScale angeben, verbessern Sie damit die Leistung, da von der Transformation den zwischengespeicherten Daten eine ausreichende Menge an Arbeitsspeicher zugewiesen werden kann.
Legen Sie beim Durchführen eines DISTINCT COUNT-Vorgangs die CountDistinctKeys-Eigenschaft oder die CountDistinctScale-Eigenschaft der Komponente fest. Mithilfe von CountDistinctKeys können Sie die genaue Anzahl von Schlüsseln festlegen, die von der Transformation für einen COUNT DISTINCT-Vorgang behandelt werden sollen. (In diesem Kontext bezeichnet CountDistinctKeys die Anzahl der unterschiedlichen Werte, die als Ergebnis eines DISTINCT COUNT-Vorgangs erwartet werden.) Mithilfe von CountDistinctScale können Sie eine ungefähre Anzahl von Schlüsseln für einen Count Distinct-Vorgang festlegen. Wenn Sie einen entsprechenden Wert für CountDistinctKeys oder CountDistinctScale angeben, verbessern Sie damit die Leistung, da von der Transformation den zwischengespeicherten Daten eine ausreichende Menge an Arbeitsspeicher zugewiesen werden kann.
Konfigurieren der Transformation für das Aggregieren
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 Transformations-Editor für Aggregieren festlegen können:
Transformations-Editor für Aggregieren (Registerkarte Aggregationen)
Transformations-Editor für Aggregieren (Registerkarte Erweitert)
Das Dialogfeld Erweiterter Editor enthält die Eigenschaften, die programmgesteuert festgelegt werden können. 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:
Klicken Sie auf eines der folgenden Themen, um weitere Informationen zum Festlegen von Eigenschaften zu erhalten:
|
Siehe auch