Zusammenfassen von Daten
Das Erstellen von Zusammenfassungsberichten aus aggregierten Transaktionsdaten für Entscheidungsunterstützungssysteme kann ein komplexer und ressourcenintensiver Vorgang sein. Programmierer sollten bei der multidimensionalen Analyse von SQL Server-Daten in erster Linie diese Komponenten als Haupttools verwenden:
- Integration Services
Integration Services unterstützt das Extrahieren von Transaktionsdaten sowie das Transformieren dieser Daten in Zusammenfassungsaggregate in einem Data Warehouse oder Datamart. Weitere Informationen finden Sie unter SQL Server Integration Services (Übersicht). - Microsoft SQL Server Analysis Services
Analysis Services organisiert Daten aus einem Data Warehouse in multidimensionalen Cubes mit im Voraus berechneten Zusammenfassungsinformationen. Diese Informationen werden verwendet, um schnell Antworten auf komplexe analytische Abfragen bereitzustellen. PivotTable® Service ermöglicht den Clientzugriff auf multidimensionale Daten. Analysis Services stellt darüber hinaus eine Reihe von Assistenten zum Definieren der multidimensionalen Strukturen bereit, die bei der Analysis-Verarbeitung verwendet werden, sowie ein Microsoft Management Console-Snap-In zum Verwalten der Analysis-Strukturen. Anwendungen können dann eine Gruppe von APIs verwenden, um die Analysis-Daten zu analysieren. Weitere Informationen finden Sie unter Konzepte und Objekte von Analysis Services.
Verwenden von Transact-SQL für einfache Zusammenfassungsberichte
Anwendungen, die einfache Zusammenfassungsberichte generieren, können die folgenden Transact-SQL-Elemente verwenden:
- Die Operatoren CUBE oder ROLLUP. Diese beiden Operatoren sind Teil der GROUP BY-Klausel der SELECT-Anweisung. Weitere Informationen finden Sie unter Zusammenfassen von Daten mit CUBE und Zusammenfassen von Daten mit ROLLUP.
- Die Operatoren COMPUTE oder COMPUTE BY. Diese Operatoren werden zudem GROUP BY zugeordnet. Weitere Informationen finden Sie unter Zusammenfassen von Daten mit COMPUTE und COMPUTE BY.
Diese Operatoren generieren Resultsets, die sowohl Detailzeilen für jedes Element im Resultset als auch Zusammenfassungszeilen für jede Gruppe enthalten, in denen die Aggregatgesamtwerte für die jeweilige Gruppe angezeigt werden. Die GROUP BY-Klausel kann zum Generieren von Ergebnissen verwendet werden, die Aggregate für jede Gruppe enthalten, jedoch keine Detailzeilen.
Anwendungen sollten Analysis Services anstelle von CUBE, ROLLUP, COMPUTE oder COMPUTE BY verwenden. Insbesondere CUBE und ROLLUP sollten Umgebungen vorbehalten sein, die keinen Zugriff auf OLE DB oder ADO haben, wie z. B. Skripts oder gespeicherte Prozeduren.
COMPUTE und COMPUTE BY werden zur Unterstützung der Abwärtskompatibilität bereitgestellt. Der ROLLUP-Operator sollte bevorzugt anstelle der Operatoren COMPUTE oder COMPUTE BY verwendet werden. Die zusammenfassenden Werte, die von COMPUTE oder COMPUTE BY generiert werden, werden als separate Resultsets zurückgegeben, und zwar überlappend mit den Resultsets, die die Detailzeilen für jede Gruppe zurückgeben, oder als ein Resultset, das die Gesamtwerte enthält und an das Hauptresultset angefügt ist. Die Verarbeitung dieser mehrfachen Resultsets steigert die Komplexität des Codes in einer Anwendung. Im Zusammenhang mit Servercursorn werden weder COMPUTE noch COMPUTE BY unterstützt. ROLLUP wird jedoch im Zusammenhang mit Servercursorn unterstützt. CUBE und ROLLUP generieren ein einzelnes Resultset, in das die Teilergebnis- und Gesamtwertzeilen eingebettet sind. In manchen Fällen kann der Abfrageoptimierer für ROLLUP effizientere Ausführungspläne generieren als für COMPUTE und COMPUTE BY.
Wenn die GROUP BY-Klausel ohne diese Operatoren verwendet wird, gibt sie ein einzelnes Resultset mit einer Zeile pro Gruppe zurück, die die Aggregatteilergebnisse für die Gruppe enthält. Im Resultset sind keine Detailzeilen enthalten.