Aus früheren Beiträgen kennen wir bereits die Unterschiede zwischen Fluss- und Bestandsgrößen (vgl. Blogbeitrag Bestandsbetrachtungen). Bestandsgrößen betrachten immer einen Zeitpunkt, so dass eine Summierung über die Zeit nicht korrekt wäre. Solche “semiadditive Analysewerte”, die nicht über alle Dimensionen einheitlich aggregiert werden, kommen in vielen Geschäftsszenarien vor. So wird etwa ein Measure, das die Menge des Lagerbestands darstellt, mit der Aggregationsfunktion “LastNonEmpty” versehen.
In diesem Blogbeitrag schauen wir uns den Aggregationstyp “ByAccount” in Verbindung mit einer Kontodimension an. Dabei handelt es sich um eine Dimension, deren Attribute eine Kontenliste für Finanzberichte darstellen.
Vorbereitung der Metadaten
Als Basis haben wir eine Datenbank mit einer Kontotabelle in einer Parent-Child-Struktur:
Die Besonderheit für diese Dimensionstabelle ist, dass eine zusätzliche Attributspalte “account_type” definiert wurde. Diese Information wird später von SQL Server Analysis Services (SSAS) dynamisch in den jeweiligen Aggregationstyp umgewandelt. Während “Income” (Ertrag) und “Expense” (Aufwand) im Verlauf der Zeit summiert werden können, also den Aggregationstyp “Sum” tragen sollen, sind “Assets” (Aktiva) und “Liabilities” (Passiva) Bestandsgrößen und werden somit mit dem Aggregationstyp “LastNonEmpty” versehen.
Somit wird durch die Kontodimension die selektive Verwaltung des Aggregationsverhaltens von Konten hinsichtlich der Zeitdimension ermöglicht. Darüber hinaus trägt die Verwendung von Standardmechanismen zur Lösung der meisten nicht standardmäßigen Aggregationsprobleme bei, die normalerweise in Business-Intelligence-Lösungen für die Verarbeitung von Finanzdaten auftreten. Ohne derartige Standardmechanismen wären für eine Lösung dieser nicht standardmäßigen Aggregationsprobleme berechnete Elemente oder MDX-Skripte (Multidimensional Expressions) erforderlich.
Datenbank bearbeiten
Bevor die Kontointelligenz definiert wird, ordnet man Kontotypen den gewünschten Aggregationstypen zu, indem man über das Kontextmenü des Projektmappen-Explorers “Datenbank bearbeiten” aufruft und die Zuordnung vornimmt.
Business Intelligence hinzufügen
Nachdem auf Basis der Kontotabelle in SSAS eine Parent-Child-Dimension angelegt wurde, muss im Dimensionseditor die Kontointelligenz definiert werden. Über den Menüpunkt “Dimension – Business Intelligence hinzufügen…” startet der “Business-Intelligence-Assistent”.
- Erweiterung “Kontointelligenz definieren” auswählen:
- Quelltabellen-Kontotypen integrierten Kontotypen zuordnen:
- Integrierte Kontotypen Elementen des Kontotypattributs zuordnen:
Beim Abschluss des Assistenten sind nun die verschiedenen Aggregatfunktionen ersichtlich:
Die obigen Aggregationstypen wurden im vorherigen Abschnitt “Datenbank bearbeiten” den jeweiligen Kontotypen zugeordnet.
Eigenschaften der Dimension und der Dimensionsattribute
Zusätzlich müssen folgende Eigenschaften für die Dimension und für die Dimensionsattribute gesetzt werden:
- Die Type-Eigenschaft der Dimension wird auf “Accounts” gesetzt.
- Die Type-Eigenschaft des Parent-Attributs wird auf “Account” gesetzt.
- Die Type-Eigenschaft des Schlüsselattributs wird auf “AccountNumber” gesetzt.
- Die Type-Eigenschaft des AccountType-Attributs wird auf “AccountType” gesetzt.
Aggregationstyp “ByAccount”
Als Letztes wird im Cube-Editor der Aggregationstyp des gewünschten Analysewerts in den Eigenschaften von “Sum” auf “ByAccount” geändert.
Die obigen Kontotypen werden dann von Measures verwendet, deren Aggregationsfunktion auf “ByAccount” eingestellt ist, um die Funktion für das Aggregieren der Elemente dieser Dimension zu bestimmen.
Berichtsergebnis
Schaut man sich nun die Werte über einen Bericht im DeltaMaster an, dann ist es ersichtlich, wie sich die verschiedenen Aggregationstypen auf die Jahressumme auswirken.