4 Analysis Services
4.1 Grundlagen
OLTP
|
Online Transaktion Processing (1985,
E.F. Codd)
Definiert ein
relationales Datenbanksystem zur Verwaltung der Datenmengen aus
den täglichen Geschäftsabläufen (z.B.
Buchungssystem der Bahn)
Eigenschaften:
Redundanzfreie
Speicherung großer Datenmengen in normalisierten
Tabellensystemen
schnelle
Abwicklung von Transaktionen (z.B. aktualisieren eines
Lagerbestandes, Buchungen auf Bankkonten)
|
OLAP
|
Online Analytical Processing (1993,
E.F. Codd)
Definiert eine
Datenbank zur Analyse von Daten aus Geschäftsabläufen
als Grundlage für unternehmerische Entscheidungen.
Speicherung
verdichteter Geschäftsdaten (z.B. Umsatzzahlen pro Monat)
in denormalisierten Tabellensystemen, durch die Gruppierung und
Aggregation beschleunigt wird (Datawarehouse)
kurze
Antwortzeiten bei Analyse großer Datenmengen
Analysen und
Berechnungen im Stile von Tabellenkalkulationen (Cube)
Abfragen und
Analysenformeln, die sich auf den Metadaten Stützen
|
Datamining
|
"Bezeichnet die automatische Suche nach
unbekannten Zusammenhängen in großen Datenbeständen"
(Q: Helmut Balzert/Lehrbuch der Softwaretechnik; ". Aufl.
Speektrum Akademischer Verlag, Heidelberg, Berlin 2000)
Mittels der automatisch erkannten
Zusammenhänge können neue Datensätze Klassifiziert
oder Prognosen auf diesen durchgeführt werden.
|
4.1.1 Grundbegriffe von OLAP
Data Warehouse
|
Ist eine themenorientiert, integrierte,
zeitabhängige, nichtflüchtige Datensammlung zur
Unterstützung von Managmententscheidungen. Können durch
denormalisierte SQL2005 Datenbanken bereitgestellt werden.
|
Data Mart
|
Stellen funktionsbereichs oder
personengruppenspezifische Extrakte aus der Data Warehouse
Datenbasis zur Verfügung. Werden in Analysis- Services durch
Datenquellsichten abgebildet.
|
Fact/Measure
|
Sind numerische Daten, die Kennzahlen eines
Unternehmens/Systems darstellen. Facts sind z.B.
|
Zelle
|
Ordnet man einem
Fakt ein Beschriftung zu, dann entsteht eine Zelle.
(5.3.2008,
2000€): Umsatz von 2000€ am 5.3.2008
(.gif,
1.024Byte): Größe einer Gif- Datei
Zelle := (Beschriftung, Fact)
|
Attribut
|
In Analysis
Services wird mit Attribut eine Menge verwendeter
Beschriftungen von Zellen bezeichnet. Die Beschriftungen werden
als Elemente des Attributs bezeichnet
Beschriftung einer Zelle <=> Element
Attribut := {Element}
Die Elemente sind wiederum strukturiert
Element := (Attributschlüssel/Elementschlüssel, Elementname, Elementwert)
Der Elementschlüssel definiert eine Menge von Spalten
in der Dimensionstabelle, aus deren Kombination die Menge der
Elemente besteht. Z.B. ist der Elementschlüssel des
Attributes Quartal in
einer Zeithierarchie die Kombination der Spalten (Jahr, Quartal),
denn die Zellen mit den Aggregationen für das 1. Qt in 2001
sind verschieden von den Zellen mit der Aggregationen für
das 1. Qt. 2002. Der Benutzer kann wiederum als Bezeichner für
die Quartale die Ziffern 1 bis 4 bevorzugen, weshalb der
Elementname an die
Quartal- Spalte gebunden wird.
|
Dimension
|
OLAP- Dimensionen sind Mengen von Attributen
und ihren Beziehungen (= Attributhierarchien)
Dimension := <Dimensionsschlüssel, {Attribut}, {Attributhierarchien}>
Beispiel ist die Dimension DimFileType. Sie besteht aus
dem Attribut FileType:
Attribut FileType := {(1, gif, "GIF"), (2, exe, "EXE"), (3, pdf, "PDF"), ...}.
Es gibt genau eine elementare Eltern- Kind- Beziehung im Attribut
FileType:
Zusammenfassung aller Elemente: All
|
+----------------+----...--+
Kindelemente: | | |
gif exe pdf
Der Dimensionsschlüssel definiert einen- oder eine
Kombination aus Attributschlüsseln, durch die eine
eindeutige Zuordnung eines Measures an genau ein Element eines
Attributs erfolgt.
Im Falle der DimFileType ist der
Dimensionsschlüssel gleich dem Attributschlüssel von
FileType (FileTypeId). So kann das Attribut- Wertepaar für
den Size- Measure einer Gif- Datei dargestellt werden als:
(Dimensionsschlüssel, Measure) -> (1, 1.024 Byte)
|
Measuregruppe /Faktentabelle
|
Ist eine Tabelle, die pro Zeile einen Measure
den zugehörigen Dimensionsschlüsseln von 1-n
Dimensionen zuordnet. Beispiel: Faktentabelle, die die
Dateigrößen den Dimensionsschlüsseln der
FileType-, und einer Zeit- Dimension zuordnen
Dimensionsschlüssel Fakten
| |
/-------------+--------------\ /------------+--...---\
timeId | FileTypeID | SizeInBytes
------------------+------------+-------------
200701011415 | .gif | 1.024
200701011720 | .exe | 501.753
200701021130 | .pdf | 10.930
... | ... | ...
|
Cube
|
Eine System aus Fakten, aufgetragen auf den
Achsen von Dimensionen, und allen durch Rollup auf den
Dimensionen generierbaren Aggregaten :
Cube := <{MeasureGroup}, {Dimension}, {Aggregate}>
Ein Beispiel zur Veranschaulichung eines Cubes ist das Ergebnis
folgender SQL- Abfrage auf der Datenbank Hypercube:
SELECT DimContent.Cat, DimContent.Sub, COUNT(FactFiles.SizeInBytes) AS [# Dateien]
FROM DimContent INNER JOIN
FactFiles ON DimContent.DimContentId = FactFiles.FK_DimContent
GROUP BY DimContent.Cat, DimContent.Sub WITH CUBE
Die Abfrage zählt alle Dateien in jeder Gruppe, die durch
eine Kombination von CAT und Sub gebildet wird. Zusätzlich
werden alle Aggregate einer Cat über alle Sub's, einer Sub
über alle Cat's und schließlich die Summe aller
Dateien gebildet. In der Tabelle sind alle Aggregate rot
hervorgehoben.
CAT SUB #Dateien
app app 127
app NULL 127
picture office 217
picture photo 101
picture vector 7
picture web 1239
picture NULL 1564
text office 102
text other 2681
text sourcecode 930
text web 626
text NULL 4339
NULL NULL 6030
NULL app 127
NULL office 319
NULL other 2681
NULL photo 101
NULL sourcecode 930
NULL vector 7
NULL web 1865
Im folgenden die Struktur eines Cubes grafisch dargestellt:
|
UDM
|
UDM steht für Unified Data Modell
Das UDM ist ein
mehrschichtiges System, mit welchem aus einer Sammlung von
Datenquellen integrierte Sichten auf Unternehmensdaten gewonnen
werden können. Es besitzt folgenden grundlegenden
Eigenschaften:
Heterogener
Datenzugriff: Ein UDM kann sich aus verschiedensten
Datenquellen speisen. Mittels Views können aus den Daten
der verschiedenen Quellen neue Fakten- und Dimensionstabellen
hergeleitet werden
Komplexe
Berechnungsmöglichkeiten: Auf der Grundlage von MDX
können über Formeln aus Cubedaten neue Informationen
abgeleitet werden
Endbenutzermodell:
KPI als Kennzahlen für Geschäftsverläufe werden
bereitgestellt. Metadaten können in verschiedene Sprachen
übersetzt und so globalisiert werden.
Proaktive Zwischenspeicherung: Zugriff auf die
Zugrundeliegenden Datenquellen kann in Echtzeit erfolgen.
|
4.2 SQL Server Business Intelligence Development
Studio (BIDS)
4.2.1 Projekttypen
Projekttyp
|
Anwendung
|
Analysis Service Project
|
Entwerfen von Cubes, Bereitstellen
|
Datei/Öffnen/Analysis Service
Datenbank
|
Pflege von bereitgestellten Cubes
|
Reporting Service Project
|
Generieren von Berichten zu MDX- Abfragen aus
Cubes, die über das Web abgegriffen werden können
|
4.2.2 Analysis Services Projekt
Ein Analysis Service Projekt hat folgende
Struktur:
[Analysis Service Project]
|
+-- Datenquellen
|
+-- Datenquellansichten
|
+-- Cubes
|
+-- Dimensionen
|
+-- Miningstrukturen
|
+-- Rollen
|
+-- Assemblys
|
+-- Sonstiges
4.3 Einen einfachen Cube entwerfen
Ein Cube aus einem simpel strukturierten
Datawarehouse erzeugt (Hypercube). Die Arbeitsumgebung ist das BIDS.
4.3.1 1) Neues Analysisprojekt U1 anlegen
4.3.2 2) Datenquelle definieren
Die Verbindungen werden in einem Analysisprojekt
zu den Datawarehouses werden mittels Datenquellen definiert
4.3.3 3) Datenquellsichten erzeugen
Aus der Vielzahl an Tabellen und Beziehungen eines
DW können die für den Cube relevanten ausgewählt
werden in einer Datenquellansicht. Zusätzlich können
Weitere Informationen aus den DW- Daten hier auf der Ebene von OLTP-
Abfragen abgeleitet werden. In unserem Beispiel könnte z.B. der
die FileSize zusätzlich in KB umgerechnet werden. Dies erfolgt
durch abfragebasierte Tabellen. Datenquellansichten ähneln
damit den Views in SQL.
4.3.4 4) Cube mit Cubeassistenten erstellen
Mittels des Cubeassistenten kann automatisch aus
den von einer Dateauellansicht bereitgestellten Tabellen ein Cube
erzeugt werden. Die Automatik untersucht dabei die Beziehungen
zwischen den Tabellen in der Datenquellansicht. Stellt sie Cube-
typische Strukturen fest, dann werden der Cube entsprechend generiert
4.3.5 5) Cube erstellen, bereitstellen und verarbeiten
Gemäß unserer Definitionen muß
auf dem Analysis Server der Cube angelegt und die Daten in diesem
eingelesen werden.
4.3.6 6) Ad Hoc Analysen
BIDS bietet im Cubedesigner ein Ad- Hoc
Analysentool an. Hier können wir unseren Cube testen.
4.3.7 7) Excel als OLAP- Client
Excel besitzt das Pivot- Tabellen- Steuerelement,
mit dem wir in Cubes navigieren und Daten analysieren können.
Excel/neue Arbeitsmappe/Daten/Pivot-> externe Datenquelle -> mit Cube verbinden
4.4 Top Down: Datawarehouse Schema aus einem Cube erzeugen
Im Folgenden wird eine OLAP- Lösung Top Down
für die Daten aus der Demo- Datenbank DMSMin entworfen. Ziel ist
die Demonstration grundlegender Prinzipien und Methoden von OLAP mit
Analysis Services
4.4.1 1) Entwurf des Cubes
Neues Analysis
Service Projekt in BIDS mit dem Namen DmsMinAnalysis
anlegen
In Projekmappenexplorer R-Click auf Cube und Cubedesigner
starten
Erzeugen der Faktentabellen- Schemen (Measures)
Measure Name: Size, Typ: BigInt, Measuregruppe: FactFiles
anlegen
Erzeugen der Zeit- Dimension
Kein SCD (Granularität = Tage)
Zeitraum: 1.1.2005 bis 31.12.2007
Sprache für Attributnamen: Deutsch
Dimension einer Faktentabelle zuordnen
Zeitdimension der FactFiles Tabelle zuordnen
Fertigstellen
4.4.2 2) Cube anpassen
4.4.2.1 Weitere Dimensionen erstellen und dem Cube
hinzufügen
Erzeugen der
Dimension zum Inhaltstyp
R- Click auf
Dimension im Projekmappenexplorer, Dimension auswählen->
der Dimensionsassistent startet
Erstellen als:
Standarddimension, Typ regulär,
Schlüsselattribut automatisch, Name der Dimension:
DimContent
Nachbearbeiten
der Dimension im Dimensionsdesigner:
Umschalten auf
Rasteranzeige
Schlüsselattribut
anpassen: Typ: Integer, Namensspalte: eigene Spalte
Attribut
Category und Type hinzufügen. Beide vom Typ
WChar, Regular und Namensspalte "Wie Schlüssel"
natürliche
Hierarchie anlegen: Attribute Category und Type in
den Hierarchie- Designer ziehen
Zuordnen der Dimension an Measures eines Cube
Im Cubedesigner/Dimensionen die Dimension DimContent als
Cubedimension hinzufügen
Sicht Dimensionsverwendung öffnen, DimContent dem
Measure FactFiles zuordnen mit Beziehungstyp: Regulär,
Granularitätsattribut: DimContentId und
Measuregruppenspalten: generieren
4.4.2.2 Weitere Measures erstellen und dem Cube
hinzufügen
4.4.3 3) Schema für Data Warehouse aus dem Cube
erzeugen (DmsMinDw1)
4.4.3.1 Aufrufen des Schemagenerierungs- Assistenten
Aus den Metadaten des Cube kann automatisch ein
relationales Schema für das Datawarehouse erstellt werden.
Dieser wird aufgerufen über:
Datenbank/Relationales Schema generieren
4.4.3.2 Anpassen des Schemas
Das generierte Schema hat für die
Dimensionsspalten Schlüssel, die nicht automatisch
inkrementieren. Für den bequemen Datenimport werden diese
Schlüssel auf Autoincrement gestellt:
DimContent Schlüssel auf Identity
einstellen
4.4.4 4) DmsMinDw Datawarehouse mit Daten füllen
Datenbank DmsMin
anhängen
Verbindungsserver
auf SQLExpress einrichten
4.4.4.1 Fakten und Dimensionstabelle mittels SQL- Script
füllen
4.4.5 5) Ad Hoc- Analysen mittels BIDS Cube- Browser
Verteilung
des Speichervolumens auf die Dateitypen
Anzahl
der Dateien pro Dateityp
Durchschnittliche
Dateigröße pro Typ
4.5 Bereitstellen von Cubes
4.5.1 Serverinstanz für Bereitstellung definieren
Vor der Bereitstellung muß der Analysis-
Server definiert werden, auf dem der Cube bereitzustellen ist. Dies
erfolgt in BIDS in Projekt/Eigenschaften/Bereitstellung/Ziel/Server,
z.B. .\SQL2005standard
4.5.2 Erstellen, Bereitstellen und Verarbeiten
4.5.3 Bereitstellungsscripte mittels
Bereitstellungsassistenten erzeugen
Soll eine Cube in einer Produktionsumgebung
bereitgestellt werden, so gibt es mehrere Varianten. Allen gemeinsam
ist, daß für diesen Fall im BIDS über den
Konfigurationsmanager eine neue Konfiguration angelegt werden sollte,
z.B. Produktion. In dieser kann z.B. als Zielserver der
Produktionsserver definiert werden.
Mittels des sog.
Bereitstellungsassistenten kann aus der *.asdatabase -
Datei ein XMLA-Bereitstellungsscript gewonnen werden. Dieses
Bereitstellungsscript enthält alle Metainformationen + Daten des
Cubes, sodass dieser auf dem Zielserver mittels MSQLMgmtStudio
erzeugt werden kann. Dazu ist das Script auf dem Zielserver mittels
MSQLMgmtStudio einfach auszuführen.
*.asdatabase --> Bereitstellungsassistent --> XMLA- Script
XMLA- Script --> MSQLMgmtStudio --> Cube
4.6 Partitionen
4.7 Datenquellansichten
Die Datenquellansichten sind die unterste Schicht
im UDM (Unified Data Modell). Sie definieren die Datenmengen, aus
denen Faktentabellen, Dimensionen und Cubes gebildet werden.
Datenquellansicht := ({Tabellen}, {Benannte Abfragen}, {Beziehungen})
Die Tabellen und die Daten in benannten Abfragen können
innerhalb einer Datenquellansicht verschiedenster HErkunft sein.
Dokumentiert wird dies durch die frei wählbare Datasource für
jede Tabelle und Abfrage.
Tabelle := (Name, Datasource, {Spalten}, {Berechnete Spalten})
Berechnete Spalte := (Name, Expression)
Expression := <Sql Spaltenausdruck>
Benannte Abfrage := (Name, QueryDefinition)
QueryDefinition := <Sql Select>
4.7.1 Benannte Abfragen definieren
Die Datenbank DmsMin enthält die
Tabelle FotoFileInfos mit technischen Daten elektronischen
Bildaufnahmen. Aus diesen soll eine Sicht gewonnen werden, die sich
in Cubes und Dateminig verarbeiten lässt. Dazu sind aus dem
Aufnahmedatum die Anteile Jahr, Monat und Tag zu extrahieren, sowie
der Schlüssel file_id vom Typ Guid in eine Zeichenkette
umzuwandeln.
SELECT CAST(file_id AS char(50)) AS id,
photography_place,
flash,
focal_length_35,
ExposureTime,
YEAR(recording_time) AS Jahr,
MONTH(recording_time) AS Monat,
DAY(recording_time) AS Tag,
DATEPART(hh, recording_time) AS UhrzeitStunde,
DATEPART(mi, recording_time) AS UhrzeitMinute
FROM data.FotoFileInfos
4.7.2 Beziehungen zwischen Tabellen definieren
Sind in den zugrundeliegenden Tabellen einer
Datenquellansicht Beziehungen definiert, dann kann der Assistent aus
diesen Beziehungen automatisch für die Datenquellansicht
definieren.
Nachträglich können die Beziehungen
hinzudefiniert werden, wenn die Quellen keine besaßen. Als
Beispiel soll die Sicht für das DataWarehouse DW1fach
erstellt werden.
4.7.3 Berechnete Spalten definieren
Tabellen können in Sichten um sog. Berechnete
Spalten erweitert werden. Durch Sql- Spaltenausdrücke werden
in berechneten Spalten die Werte aus den primären Daten des
Datensatzes hergeleitet.
Beispiel: Spalte SizeInKb aus der Spalte
SizeInBytes der Faktentabelle FactFiles herleiten.
4.8 Dimensionen entwerfen
Dimensionen sind wie folgt definiert:
Dimension := <Dimensionsschlüssel, {Attribut}, {Attributhierarchien}>
Unter dem entwerfen von Dimensionen werden in Analysis Services die
Konfiguration der Attribute, Attributhierarchieen und
Dimensionsschlüssel verstanden.
4.8.1.1 Typen von Dimensionen in Analysis Services
Standarddimension
Basieren auf Tabellen
aus dem DW. Bilden im Allg. keinen Zeitstrahl ab.
Standarddimensionen
sind in weitere Untertypen unterteilt wie Regular, Products,
Accounts, ....
Zeitdimension
Basieren auf Tabellen
aus dem DW. Die Zeilen definieren Zeitpunkte auf einem Zeitstrahl.
Jede Zeile hat einen Schlüssel vom Typ Integer. In den
Faktentabellen wird auf die Zeitpunkte über diese Integer-
Fremdschlüssel Bezug genommen
Serverzeit Dimension
Stellen eine
properitäre Tabellenstruktur für eine Zeitdimension von
Analysis- Services dar, die von diesen für einen Zeitraum
automatisch auf dem Server generiert werden. Die Schlüssel sind
Date/Time- Werte für jeden Zeitpunkt. Die Faktentabelle muß
sich über diese DateTime- Schlüssel auf die
Dimensionstabelle beziehen.
4.8.2 Dimensionen in BIDS entwerfen
Eine Dimension in BIDS wird mit einem
Dimensionsassistenten angelegt und mit einem
Dimensionsdesigner angepasst. Bei der Erstellung kann auf
eine vorhandene Dimensionstabelle im DW zugegriffen werden, oder eine
Dimension wird von Grund auf neu entworfen. Im letzten Fall kann das
Schema mit dem Schemagenerierungsassiteten erzeugt werden.
Der Dimensionsdesigner hat folgende Struktur:
Dimensionsdesigner
|
+-- Datenquellansicht // Auswahl der zugrundeliegenden Dimensionstabellen
|
+-- Attributeditor // Konfigurieren der Attribute
|
+-- Hierarchieeditor // Definition der Beziehungen zwischen den Attributen
4.8.3 Dimensionen und Cubes
Eine Dimension kann in mehreren Cubes gleichzeitig
eingesetzt werden. Umgekehrt kann ein Cube verschiedene Dimensionen
aufweisen. Es ergibt sich eine m:n Beziehung
Cubes <<-(besitzt>)->> Dimensionen
4.8.4 Dimensionsdesigner.Datenquellansicht
Die Tabellen, aus denen sich die Elemente der
Attribute einer Dimension gebildete werden, definiert die
Datenquellansicht.
Die Auswahl erfolgt über den Kontextmenüpunkt
Tabellen anzeigen.
4.8.4.1 Scheneeflocken- und Sternschema
Dimensionstabellen mit Hierarchien können
normalisiert oder denormalisiert vorliegen.
Sind Dimensionstabellen denormalisiert, dann wird
vom Schneeflocken- Schema gesprochen:
DimProduktkategorie <-(umfasst>)->> DimProdukte <-(wurden verkauft>)->> FactUmsätze
Durch eine Denormalisierung, bei der die Dimensionstabellen zu
einer wieder verschmolzen werden, entsteht das Sternschema:
DimProdukte <-(wurden verkauft>)->> FactUmsätze
|
+-Produktgruppe
+-Produkt
Die Datenquellansicht umfasst alle Dimensionstabellen und ihre
Beziehungen der im Star oder Snowflake- Schema gebildeten
Dimensionen.
Beispiel: Aus AdventureWorksDW die
Dimensionstabellen DimProductCategory, DimProductSubcategory
und DimProduct laden.
4.8.5 Dimensionsdesigner.Attributeditor
Attribute sind Mengen aus Beschriftungen für
einzelne Messdaten. Die einzelenen Beschriftungen werden auch
Elemente genannt.
Beschriftung <=> Element
Attribut := ({Element}, Standardelement)
Die Elemente eines Attributs stammen aus den in der Datenquellansicht
definierten Tabellen. Diese Tabellen werden auch als
Dimensionstabellen bezeichnet. Jedes Element basiert auf einer
Zeile einer Dimensionstabelle. Innerhalb der Zeile müssen
Spalten für den Attributschlüssel, den Elementnamen und den
Elementwert definiert werden.
Element := (Attributschlüssel, Elementname, Elementwert)
Im Attributeditor können
Attribute einer Dimension aus der View
hinzugefüt oder gelöscht,
Attributschlüssel, Elementname und
Elementwert festgelegt,
Dimensionsschlüssel definiert,
Verhalten bei Aggregation definiert
werden.
4.8.5.1 Allgemeine Attributeigenschaften
Attributeigenschaft
|
definiert
|
Name
|
Name des Attributes
|
Usage
|
Attribut ist Dimensionsschlüssel oder
Verweis auf Eleternelement in einer Paren/Child- Hierarchie oder
einfach ein gewöhnliches Attribut
|
Type
|
Informationstyp: Ist ein Bezug auf Metadaten,
die das Attribut ale Mitglied der vordefinierten Hierarchie
kennzeichnen wie Week oder Produkt
|
KeyColumns
|
Definiert die Spalte(n) in der
Dimensionstabelle, die den Attribut-/Elementschlüssel für
das Attribut enthält.
Der Elementschlüssel definiert
eine Menge von Spalten in der Dimensionstabelle, aus deren
Kombination die Menge der Elemente besteht. Z.B. ist der
Elementschlüssel des Attributes Quartal in
einer Zeithierarchie die Kombination der Spalten (Jahr, Quartal),
denn die Zellen mit den Aggregationen für das 1. Qt in 2001
sind verschieden von den Zellen mit der Aggregationen für
das 1. Qt. 2002. Der Benutzer kann wiederum als Bezeichner für
die Quartale die Ziffern 1 bis 4 bevorzugen, weshalb der
Elementname an die
Quartal- Spalte gebunden wird.
|
NameColumn
|
Definiert die Spalte, welche als als
Beschriftung der Elemente erscheinen soll
|
ValueColumn
|
optional. Wenn nicht definiert, dann ist der
Elementvalue der Elementschlüssel (KeyColumns)
|
DefaultMember
|
Standardelement in der Attributhierarchie
|
4.8.5.2 Attributschlüssel definieren
Die Definition eines korrekten
Attribut/Elementschlüssels ist wesenlich für ein
erfolgreiches Arbeiten mit SSAS. Als Beispiel wird das Attribut
CalendarQuarter aus der
Dimensionstabelle DimTime von
AdventureWorksDW betrachtet. Wird eine Zeitdimension über der
Tabelle DimTime gebildet, dann ist Anfangs für Attribut
CalendarQuarter der Schlüssel nur an die Spalte ClanedarQuarter
aus DimTime gebunden. Wenn als Name die berechnete Spalte QuarterName
('Q'+cast(CalendarQuarter
as varchar(20)) + ' ' + cast(CalendarYear as varchar(6))
,
dann ergibt sich folgendes falsche Ergebnis im Dimensionsbrowser:
Es werden nur Elemente für die verschiedenen
Werten in der Spalte CalendarQuarter (1-4) gebildet. Jedoch hat jedes
Jahr seine eignene Quartale, weshalb die Korrete Bildung der Elemente
darin besteht, sie aus den Kombinationen der Werte der Spalten
ClanedarQuarter und CalendarYear zu erzeugen. Im folgenden das
Ergebnis:
4.8.5.3 Elementname definieren
Die für den Anwender sichbare Beschriftung
von Zellen durch ein Element wird durch die NameColumn-
Eigenschaft definiert. Inbesondere, wenn der Attributschlüssel
an mehrere Spalten gebunden ist, muß die NameColumn definiert
werden.
4.8.5.4 Sortierung der Elemente
Per Default werden die Elemente eines Attributes
gemäß der Reihenfolge der Elementschlüssel angezeigt.
Dies kann über folgende Eigenschaften geändert werden:
Attributeigenschaft
|
definiert
|
AttributeHierarchyOrdered
|
soll eine Sortierung der Elemente stattfinden oder nicht
|
OrderBy
|
Nach welcher Eigenschaft soll sortiert werden:
Key: Es wird nach dem
Attributschlüssel sortiert
Name: Es wird nach der Name
(NameColumn) Eigenschaft sortiert
AttributeKey:
Es wird Nach dem Attributschlüssel des in OrderByAttribute
festgelegten Attributes sortiert
AttributeName:
Es wird nach dem Name des in OrderByAttribute
festgelegten Attributes sortiert
|
OrderByAttribute
|
Ein, mit diesem in Beziehung stehendes
Attribut, nach welchem sortiert werden soll
|
Beispiel: Für die Produktdimension aus
AdventureWorksDW:
Sortieren von Dim Product Category und
Dim Product Subcategory nach der Eigenschaft Name
Definieren
einer Attributbeziehung zwischen dem Attribut Dim Product und
List Price. Sortieren des Attributs Dim Product nach
List Price
4.8.5.5 Gruppieren der Elemente
Die Elementmengen von Attributen können
automatisch Gruppiert werden. Diese Gruppierung kann nach
verschiedenen Verfahren erfolgen. Über folgenden Attribute wird
diese Gruppierung gesteuert:
Attributeigenschaft
|
definiert
|
DiscretisationMethod
|
Algorithmus, mittels dem die Unterteilung in
Gruppen erfolgt
|
DiscretisationBucketCount
|
Anzahl der vom Algorithmus zu bildnenden
Gruppen
|
Beispiel:
In der Dimension DimProduct aus
AdventureWorksDW soll eine Attributhierarchie PreisGruppen
aus dem Attribut ListPrice gewonnen werden.
4.8.6 Dimensionsdesigner.Hierarchien
Aus den Attributen können Hierarchien mit
mehreren Ebenen aufgebaut werden, um dem Anwender einen
strukturierten Zugriff auf die Zellen zu ermöglichen. Z.B. wählt
der Anwender bei der Analyse ein Jahr, in diesem entscheidet er sich
für ein Quartal, dessen aggregierten Umsatz er ablesen möchte.
Es sind folgende Typen von Hierarchien in SSAS
verfügbar:
Alle Hierarchien
|
+-- Attributhierarchien (All-Elemente)
|
+-- Multilevel- Hierarchien
|
+-- Parent/Child
|
+-- Elementeigenschaften
4.8.6.1 Attributhierarchien
Jedes Attribut bildet mit seinen Elementen eine
sog. Attributhierarchie. Per Default ist diese in zwei Ebenen
gegliedert:
1. Ebene All
|
2. Ebene +-- Elemente ...
Das All- Element der 1. Ebene wird automatisch erstellt und
bezeichnet den aggregierten Wert über alle Measures der 2.
Ebene. Die automatische Erstellung des All- Elements kann jedoch
abgeschaltet werden, indem die Attributeigenschaft IsAggregatable auf
false gesetzt wird.
Attributeigenschaft
|
definiert
|
IsAggregatable
|
Erstellung des All Elements an/abschalten
|
Die Bezeichnung des
All- Elements kann für alle Attributhierarchien einer Dimension
geändert werden in den Dimensionseigenschaften:
Dimensionseigenschaft
|
definiert
|
AttributeAllMemberName
|
Bezeichnung des All- Elementes in allen
Attributhierarchieen
|
4.8.6.2 Unbekanntes Element
Sind Measures einer Faktentabelle keinem Element
einer Attributhierarchie zuordenbar, dann wird das Measure der
Unknown- Element zugeordnet. Das Unknown- Element wird
über folgende Eigenschften einer Attributhierarchie gesteuert:
Dimensionseigenschaft
|
|
UnknownMember
|
true- das Unbekannte Element ist
sichtbar. Sonst ist es unsichtbar
|
UnknownMemberName
|
Name des Unknown-
Elements
|
4.8.7 Mutlilevel- Hierarchie
1. Ebene All
| ]- Attributhierarchie CAT
2. Ebene +-- text -------------------------- pic
| | ]- Attributhierarchie SUB
3. Ebene +-- office -- source -- web +-- office---photo---vector
Die Elemente einer Attributhierarchie können die All- Elemente
einer anderen Attributhierarchie bezeichnen. Solche
Attributbeziehungen werden als Multilevel- Attributbeziehung
bezeichnet. Diese können von BIDS anhand der Beziehungen in den
zugrundeliegenden Dimensionstabellen teilweise automatisch bestimmt
werden, oder sie können durch den Benutzer definiert werden.
Achtung: Die in einer Multilevel-
Hierarchie zu arrangierenden Attribute sollten Elementschlüssel
besitzen, die auf den zugrundeliegenden Dimensionstabellen eindeutig
sind (Notfalls mit Zusammengesetzten Schlüsseln arbeiten) !
4.8.7.1 Erstellen einer Multilevel- Hierarchie
4.8.7.2 Eigenschaften einer Multilevel- Hierarchie
Hierarchieeigenschaft
|
definiert
|
Name
|
Name der Multilevel- Hierarchie
|
AllMemberName
|
Bezeichnung des All- Elementes auf der
höchsten Ebene der Multilevel- Hierarchie
|
DisplayFolder
|
Name eines Ordners, dem die Hierarchie
zugeordnet werden kann.
|
4.8.7.3 Eigenschaften einer Attributbeziehung
Beziehungseigenschaft
|
|
RelationshipType
|
Flexible: Beziehung kann sich im
Laufe der Zeit ändern (z.B. der Wohnort eines Kunden kann
sich ändern in der Customer Geography Hierarchie von
AdventureWorks)
Rigid: Die Beziehung ist
unveränderlich (z.B. Geschlecht eines Kunden in der Customer
Geography Hierarchie von AdventureWorks)
Die Einstellungen beeinflussen das
Laufzeitverhalten bei Änderungen der Cube- Datenbasis: Werden
Flexible Beziehungen geändert, dann zieht das eine
Neuberechnung aller betroffener Aggregationen nach sich. Im Falle
Rigid erfolgt keine Neuberechnung von Aggregationen, und es
wird eine Fehlermeldung ausgegeben.
|
Cardinality
|
Beziehungstyp, 1:1 oder 1:N
Der 1:1 Typ definiert Elementeigenschaften.
So kann das Jahreseinkommen über eine solche Beziehung als
Elementeigenschaft der Elemente aus der Vorname_Name
Attributhierarchie in der Dim Customer definiert werden.
Der 1:N Typ definiert die Stufen in einer
Multilevel- Hierarchie.
|
Name
|
Name der Beziehung
|
Visible
|
|
4.8.7.4 Elementeigenschaften
Elementeigenschaften stellen zusätzliche
Informationen zu einem Element aus einer Attribut- Hierarchie dar.
Diese Detailinformationen sind Elemente aus anderen Attribut-
Hierarchien, die über eine 1:1 Beziehung mit den Elementen der
betrachteten Attribut- Hierarchie verknüpft sind.
Beispielsweise ist die Attribut- Hierarchie yearly
income (Jahreseinkommen) eines Kunden in der Customer- Dimension
eine Eigenschaft des bezeichneten Kunden (z.B. Attribut- Hierarchie
Vorname_Name).
Sinn und Zweck der Element- Eigenschaften ist es,
die Elemente bezüglich ihrer Eigenschaften zu filtern, was
besonders in mächtigen Attribut- Hierarchien sinnvoll ist. Z.B.
kann die Menge aller Kunden eingeschränkt werden auf die
Untermenge aller Kunden mit einem Jahreseinkommen = 20000.
Beispiel:
Umbenennen der Dim Product Category - Dim
Product Subcategory Multilevel- Hierarchie in Produkte
All Element in
Alle Produkte umbenennen
4.8.8 Parent /Child
Attribute
id parent name
000 000 root <-----------+
001 000 c: <----+--+ -+
002 001 programme -+ |
003 001 windows <-+ --+
004 003 system32 -+
Die Parent/Child Beziehung ist eine Beziehung zwischen
Dimensionselementen. Ein
Beispiel dafür ist die als Dimension abgebildete
Dateibaumstruktur eines Festplattenverzeichnisses. Jedes
Dimensionselement muß dabei auf ein Elternelement verweisen.
Diese Hierarchien werden auch als unausgegelichene Hierarchien
bezeichnet, weil die Zweige des Baumes in verschiedenen Ebenen
enden können.
Die Parent/Child
Beziehung wird durch Attributeigenschaften beschrieben.
Attributeigenschaft
|
definiert
|
usage
|
Wenn usage = Parent, dann sind die
Attributelemente Fremdschlüssel der Elternelemente. Alle
folgenden Eigenschaften beziehen sich auf das als parent
gekennzeichnete Attribut.
|
MembersWithData
|
NonLeafDataVisible: In der
erzeugten Hierarchie erscheinen die Zwischenknoten nochmals als
zusätzliche Elemente in der unteren Ebene
NonLeafDataHidden: Die
Zwischenknoten erscheinen nicht mehr zusätzlich wie in 1
|
NameColumn
|
Die angezeigten Beschriftungen werden in der
NameColumn des Dimensionsschlüssels
definiert
|
NamingTemplate
|
Eine Vorlage zur
Benennung der ersten n Hierarchieebenen. Muss in der Parent
Attributhierarchie definiert werden.
|
RootMemberIf
|
Algorithmus, mit
dem das Element der höchsten Hierarchieebene erkannt wird.
Muss in der Parent
Attributhierarchie definiert werden.
|
Beispiel:
Die Datenbank AdventureWorksDW enthält
eine Dimensionstabelle nach dem Sternschema, welche das Personal und
dessen hierarchische Organisation in einem Unternehmen widerspiegeln.
Die Mitarbeiterhierarchie ist dabei durch eine Rekursion
implementiert, wobei in jedem Datensatz ein Fremdschlüssel auf
den Übergeordneten Manager des Mitarbeiters verweist.
Demonstriert wird dabei:
Hinzufügen einer berechneten Spalte
zu DimEmployee in der Datenquellansicht, die aus FirstName
und LastName den FullName zusammensetzt
Modellieren einer Parent-Child Beziehung in
einer Dimension
Ebene All aus der Hierarchie entfernen
(Parent- Fremdschlüsselattribut, Eigenschaft IsAggregatable)
Vorlage zur Benennung der Hierarchieebenen
anlegen (Parent- Femdschlüsselattribut, Eigenschaft
NamingTemplate)
4.8.9 Zeitdimensionen
Zeitdimensionen definieren einen Zeitstrahl, der
in Perioden unterteilt ist. Sie können aus Tabellen eines
Datawarehaouse erstellt werden. Alternativ kann eine Zeitdimension
für einen definierten Zeitraum auf dem Server generiert werden.
In diesem Fall spricht man von einer Serverzeitdimension.
Beispiel:
Zeitdimension aus
der AdventureWorksDW Tabelle DimTime erstellen. Name- Spalte
des Dimensionsschlüssels auf FullDateAlternetKey umstellen.
Serverzeitdimension
von 1.1.2000 bis jetzt für den Cube HC1 erstellen.
Dimension für die Measuregroup FactFiles verwenden
(ctime)
4.8.10 Vordefinierte Hierarchien
BIDS unterstützt den Entwickler beim Entwurf
von Dimensionen, indem es eine Reihe von Vorlagen für häufig
in der Geschäftswelt existierende Hierachien anbietet. Beim
Entwurf einer Dimension kann der Entwickler eine solche
Hierarchievorlage auswählen. Anschließend muß er den
Attributen der Dimension die Attribute aus der Hierarchievorlage
zuweisen. Als Resultat liefert der Assistent die Dimension mit einer
Hierarchie gemäß der Vorlage (wenn zu Beginn des
Assistenten das Automaische Erstellen von Hierarchien aktiviert
wurde).
Beispiele für Vorlagen:
Name
|
Ebenen
|
Bedeutung
|
Produkte
|
Productcategory/Productgroup/Product
|
Strukturieren einer Produktpalette
|
Zeit
|
Year/Semester/Quater/Month...
|
Strukturieren des Zeitstrahls
|
Konten
|
|
Bilanz und GuV.
Konten- Dimensionen basieren auf Parent/Child
Beziehungen. Beim Anlegen mittels Business Intelligence
Assistent muss dem Attributty Diagramm der Konten der
Parent Account Key zugeordnet werden
|
4.8.11 Benannte Mengen- Untermengen von Elementen einer
Dimension
Zwecks späterer Filterung können
Teilemengen von Elementen einer Dimension mittels MDX- Ausdrücke
beschrieben (berechnet) werden. Dies geschieht in den Berechnungen
eines Cubes. Als Script- Typ ist Benannte Menge auszuwählen.
Nach Auswahl der Formularansicht in der Symbolleiste kann
zunächst für die Teilmenge ein Name vergeben werden.
Anschließend wird die Teilmenge durch den MDX- Ausdruck
beschrieben.
Name: Alle 2006
MDX: {[Zeit].[Jahr - Woche - Datum].[Datum].&[2006-01-01T00:00:00]:[Zeit].[Jahr - Woche - Datum].[Datum].&[2006-12-31T00:00:00]}
Nach der Bereitstellung erscheint im Browser in den Metadaten der
Dimension Zeit die benannte Menge in {...} Klammern. Wird eine
Pivot- Tabelle mit der Zeitdimension aufgebaut, so kann die Benannte
Menge zum Filtern auf den Filterabschnitt über der Pivot-
Tabelle gezogen werden.
4.9 Measures entwerfen
4.9.1 Zurodnung von Dimensionen
Measures bilden zusammen mit den Attributelementen
der Dimensionen die Zellen eines Cube.
Zelle := (Attribut_X.Element_Y, Measure)
Die Grundlage dieser Zellenbildung sind die Measuretabellen, in denen
die Dimensionsattribute als Fremdschlüsselspalten neben den
Measurespalten geführt werden. Diese Zurdnung kann im
Cubedesigner auf der Seite Dimensionsverwendung gesteuert
werden.
4.9.1.1 Granularität
Sind den Measures Multilevel- Dimensionen
zugeordnet, dann werden durch die höheren Ebenen Measures durch
aggregation zusammengefasst, wodurch die Daten in einer göberen
Auflösung (Granularität) erscheinen.
4.9.2 Steuern der Aggregation
Durch Hierarchien in den Dimensionen wird die
Information in Richtung höherer Ebenen durch Aggregation
verdichtet (Granularität). Beispiel:
Die
Aggregation kann zum einen über die Dimensionen (z.B.
IsAggregatable und CustomRollUp Eigenschaft) gesteuert, und zum
anderen über die Aggregationsfunktionen der Measures gesetz
werden.
Measureeigenschaft
|
definiert
|
AggregateFunction
|
Funktion, mittels der aus den Werten der
Kindelemente der Wert des aktuellen Nichtblattelementes berechnet
wird
|
MeasureExpression
|
Ein eingeschränkter MDX- Ausdruck,
mittels dem die Werte der Kindelemente vor der Aggregation
gewichtet werden können:
[Measure A] OP [Measure B]
Es gelten folgende Einschränkungen:
OP := {+, /}, Measure A muß aus einer
anderen Measuregruppe wie Measure B stammen
|
4.9.3 Default Measure einstellen
Das in MDX- Ausdrücken verwendete Default-
Measure wrid über die Eigenschften den Cubes definiert.
4.10 Sicherheit
OLAP- Anwendungen erschließen
geschäftskritische Informationen. Sie müssen sorgfältig
gegen unbefugten Zugriff abgesichert werden.
Der Zugriff wird für Windows- Benutzer
festgelegt. Damit wird auf das bewährte Windows-
Authentifizierungssystem zurückgegriffen. Produktionssyteme
sollten sinnvollerweise in einer AD- Domänestruktur betrieben
werden.
In SSAS können Windowsbenutzer in speziellen
Rollen aufgenommen werden. Diesen Rollen werden Zugriffsrechte auf
Cubes, Measures und Dimensionen eingeräumt.
Unter den Rollen gibt es eine ausgezeichnete,
genannt Serverrolle. Alle
Mitglieder der Serverrolle dürfen auf einer SSAS- Instanz :
neue Rollen
erstelle
Den Rollen
Zugriffsrechte einräumen
Windowsbenutzer
den Rollen hinzufügen
Die Serverrolle kann im
MgmtStudio unter den Eigenschaften der SSAS- Serverinstanz gepflegt
werden. Nur der Datenbankadmin und die Mitglieder der Serverrolle
haben Zugriff auf diese.
Die von der
Serverrolle verschiedenen Rollen werden als
Datenbankrollen
bezeichnet.
4.11 MDX Abfragen
4.11.1 Einsatzorte für MDX- Ausdrücke im Cube
4.11.2 Grundlegendes Prinzipien in MDX
Ein Cube ist eine Menge
aus Zellen, die Measures und Aggregationen der Measures enthalten.
Zum Verständnis von MDX ist es hilfreich, diese Menge als fix
anzusehen.
4.11.2.1 Analogie Geometrie
Measures und
Aggregationen werden in Zellen gespeichert. Jedes Measure und
jede Aggregation ist eindeutig adressiert durch ein Tupel.
Das Vorbild dieser Adressierung sind dabei die
Koordinaten der Geometrie. Zum Beispiel wird ein Punkt einer Ebene
als Schnittpunkt zweier orthogonaler Geraden definiert. Der
Normalenabstand dieser Geraden von einem Bezugspunkt (Nullpunkt)
bildet die Koordinate. Die Richtung der Geraden werden als Achsen
bezeichnet, und die notwendige Anzahl orthogonaler Geraden in einem
Raum, deren Schnittmenge aus genau einem Punkt besteht, ist die
Dimension des Raumes.
4.11.2.2 Zelladressierung im Cube mittels Tupel
Im Unterschied zur Geometrie haben die Koordinaten
einer Cube- Zelle nicht notwendigerweise nummerische Komponenten:
Dimension := (Dimensionsschlüssel, {Attribute}, {Attributbeziehungen})
Attribut := {Elemente}
Element := (Elementschlüssel, Namen, Wert)
Die Cube- Koordinaten bezeichnen "Schnittpunkte" der
Measure- Achsen mit den durch Element definierten Dimensionsachsen.
Sie werden als Tupel bezeichnet.
4.11.2.3 Syntax von Tupeln
<Tupel> ::= "(" [<Measure>][{"," <Dimension- Attributhierarchie>}] ")"
<Measure> ::= <Name der Measuregruppe>"."<Name des Measures>
<Dimension- Attributhierarchie> ::= <Name des Dimensionscontainers>"."<Attributhierarchie>
<Attributhierarchie> ::= <Name Attributhierarchie>[{"." <Attributliste>}]
<Attributliste> ::= <Name Attribut> | <Elementschlüssel> | "Members" | "Children"
<Elementschlüssel> ::= "&"<Wert eines Attributes, z.B. ".gif">
4.11.2.4 Implizite Ergänzungen von Attributhierarchien
Ein Problem für den Einsteiger in MDX sind
implizite Ergänzungen in den Attributlisten der Tupel, wenn
diese unvollständig angegeben werden. Werden die
Attributhierarchien in den Tupeln nicht exakt ausformuliert, dann
werden sie vom MDX- Interpreter anhand folgender Regeln automatisch
vervollständigt. Dem erfahrenen Benutzer erleichtert dies die
Arbeit mit MDX...
Wenn eine Attributhierarchie (=
Attributlist) kein Element bezeichnet, dann wird diese wie folgt
ergänzt:
Wenn ein Standardelement für die
Attributhierarchie definiert wurde, dann wird die
Attributliste zu der des Standardelementes ergänzt
Andernfalls
Wenn für
die Attributhierarchie die Eigenschaft IsAggregatable=true
gesetzt, dann wird die Attributliste zu der des All-
Elemntes ergänzt
Andernfalls
Die
Attributliste wird zu der des ersten Elements in der
Attributhierarchie ergänzt
Wenn für eine Measuregroup kein
Element durch eine Attributliste definiert wurde, dann wird diese
wie folgt ergänzt:
Wenn ein Standarmeasure für die
Measuregroup definiert ist, dann wird die Attributliste zum dem des
Standardelementes ergänzt
Andernfalls wird die Attributliste zu
der des ersten Measures in der Measuregroup ergänzt.
Das Standardelement
wird in den Eigenschften eines Dimensionsattributes unter
DefaultMember festgelegt.
4.11.2.5 Beispiele für Tupel
Im Folgenden einige Beispiele für durch Tupel
definierte Zellen auf den Dateisystem- Cube
Tupel
|
Adressierte Zelle
|
(
[Measures].[Size In Bytes],
[Dim Content].[Cat].&[text]
)
|
Adressiert wird die Zelle mit den aggregierten
Werten aller Measures, die in der Dimension DimContent
das Attribut Cat mit dem Wert text
belegt haben.
Ergebnis z.B. = 216391642
|
(
[Measures].[Size In Bytes],
[Dim Content].[Cat].&[picture],
[Dim File Type].[FileType].&[565]
)
|
Adressiert wird die Zelle mit den aggregierten
Werten aller Measures, die in der Dimension DimContent
das Attribut Cat mit dem Wert
picture , und in der Dimension Dim
File Type das Attribut FileType
mit dem Schlüsselwert 565 = ".gif" belegt haben.
Ergebnis z.B. = 21944805
|
([Measures].[Size In Bytes], [Dim Content].[Cat])
|
Addresiert wird die Zelle mit den Aggregierten
Werten aller Mesures, da die Attributliste [Dim Content].[Cat]
unvollständig ist und implizit ergänzt wird zu
[Dim Content].[Cat].[All]
|
4.11.2.6 Alternative Darstellung der Zelladressierung
durch Tupel mittels denormaliserter Tabellen
Um die Adressieren mittels MDX zu verstehen, ist
es hilfreich, sich den Aufbau eines OLAP- Cubes wie folgt
vorzustellen:
|
Hyperwürfel
|
|
Dimension FileContent
|
Measures
|
Zeilennummer
|
Cat
|
Sub
|
File
|
SizeInKb
|
MaxAgeInDays
|
1
|
Bild
|
Foto
|
a
|
1
|
100
|
2
|
Bild
|
Foto
|
b
|
5
|
30
|
3
|
Bild
|
Foto
|
all
|
6
|
130
|
4
|
Bild
|
Chart
|
c
|
3
|
20
|
5
|
Bild
|
Chart
|
d
|
7
|
40
|
6
|
Bild
|
Chart
|
all
|
10
|
60
|
7
|
Bild
|
all
|
all
|
16
|
190
|
Für jede Hierarchieebene erfolgt eine
Aggregation, die durch den Attributwert all signalisiert
wird.
Soll auf einen Wert in
dieser Tabelle zugegriffen werden, dann muß
die Measure-
Spalte ausgewählt werden
durch eine
Kombination von Attributwerten die Zeile ausgewählt werden
Mathematisch betrachtet
handelt es sich dabei um die Koordinate eines Hyperwürfels.
Hyerwürfelkoordinaten werden als Tupel bezeichnet.
4.11.2.6.1 Beispiele
Mit dem Tupel
(Measures.SizeInKb, [Dim Content].[Hierarchie].[Cat].&[Bild])
wird folgende Menge adressiert:
|
Hyperwürfel
|
|
Dimension FileContent
|
Measures
|
Zeilennummer
|
Cat
|
Sub
|
File
|
SizeInKb
|
MaxAgeInDays
|
1
|
Bild
|
Foto
|
a
|
1
|
100
|
2
|
Bild
|
Foto
|
b
|
5
|
30
|
3
|
Bild
|
Foto
|
all
|
6
|
130
|
4
|
Bild
|
Chart
|
c
|
3
|
20
|
5
|
Bild
|
Chart
|
d
|
7
|
40
|
6
|
Bild
|
Chart
|
all
|
10
|
60
|
7
|
Bild
|
all
|
all
|
16
|
190
|
Mit dem Tupel
(Measures.SizeInKb, [Dim Content].[Hierarchie].[Cat].&[Bild].&[Chart])
wird folgende Menge adressiert:
|
Hyperwürfel
|
|
Dimension FileContent
|
Measures
|
Zeilennummer
|
Cat
|
Sub
|
File
|
SizeInKb
|
MaxAgeInDays
|
1
|
Bild
|
Foto
|
a
|
1
|
100
|
2
|
Bild
|
Foto
|
b
|
5
|
30
|
3
|
Bild
|
Foto
|
all
|
6
|
130
|
4
|
Bild
|
Chart
|
c
|
3
|
20
|
5
|
Bild
|
Chart
|
d
|
7
|
40
|
6
|
Bild
|
Chart
|
all
|
10
|
60
|
7
|
Bild
|
all
|
all
|
16
|
190
|
Mit dem Tupel
(Measures.SizeInKb, [Dim Content].[Hierarchie].[Cat].&[Bild].&[Chart].&[c])
wird folgende Menge adressiert:
|
Hyperwürfel
|
|
Dimension FileContent
|
Measures
|
Zeilennummer
|
Cat
|
Sub
|
File
|
SizeInKb
|
MaxAgeInDays
|
1
|
Bild
|
Foto
|
a
|
1
|
100
|
2
|
Bild
|
Foto
|
b
|
5
|
30
|
3
|
Bild
|
Foto
|
all
|
6
|
130
|
4
|
Bild
|
Chart
|
c
|
3
|
20
|
5
|
Bild
|
Chart
|
d
|
7
|
40
|
6
|
Bild
|
Chart
|
all
|
10
|
60
|
7
|
Bild
|
all
|
all
|
16
|
190
|
4.11.2.7 Mengen
Jedes Tupel adressiert eine Zelle im Cube. So wie
in SQL neben einzelnen Datensätzen auch Mengen von Datensätzen
abgefragt werden können, so sind auch in MDX Mengen von Zellen
adressierbar. Dies erfolgt durch Listen von Tupeln, genannt Mengen
.
4.11.2.7.1 Syntax einer Menge
"{" <Tupel> [{"," <Tupel>}] "}"
Definition eines Bereiches
"{" <Attributliste> : <Attributliste> "}"
Alle Tupe in einer Menge müssen die gleichen Measurs über
die gleichen Dimensionen adressieren.
4.11.2.8 Beispiele für Mengen
Menge
|
Adressierte Zellen
|
{([Measures].[Size In Bytes], [Dim Content].[Cat].&[picture]),
([Measures].[Size In Bytes], [Dim Content].[Cat].&[text])}
|
Die Zellen mit den aggregierten Werten der
Dateigrößen für alle Dateien mit Bildinhalten und
alle Dateien mit Textinhalten werden adressiert
|
{([Dim File Type].[FileType].&[574]) :
([Dim File Type].[FileType].&[631])}
|
Die Zellen mit den aggregierten Werten des
Standardmeasures , die die Elementen der Dimension Dim
File Type zwischen den .c und .css haben, wird adressiert.
Da hier kein Tupelausdrücke erlaubt sind,
die das Measure definieren, muß die Einschränkung über
die Where Klausel erfolgen.
|
4.11.2.9 Die Funktionen Children und Member
MDX liefert wie fast
alle Formale Sprachen auch Funktionen mit.
Die Funktion Children
liefert eine Menge von Zellen, aus denen das aktuell adressierte
Element aggregiert wurde. Beispiel:
-- Alle Elemente, aus denen die Aggregation All erzeugt wurde
([Dim Content].[Cat].[All].Children)
Die Funktion Member
liefert alle Elemente innerhalb einer Hierarchie oder Ebene einer
Hierarchie.
-- Alle Elemente der "Dim Content.Hierarchie" Hierarchie
([Dim Content].[Hierarchie].members)
4.11.3 MDX- Abfragen
Mittels MDX- Abfragen können Teilmengen von
Zellen eines Cube für Analysezwecke gewonnen werden. Die MDX-
Abfrage besteht aus drei Teilen:
Select- Klausel
Wählt die Achsen
des Cubes aus, die im Ergebnis erscheinen sollen. Zusätzlich
werden auf den Achsen Bereiche eingeschränkt (z.B. Achse der
Dateitypen, Zeitachse vom 1.1.2006- 31.12.2006)
From- Klausel
Definiert den Cube der
Olap- Datenbank, aus dem die Daten entnommen werden (z.B. DMS-Cube)
Where- Klausel
Schränkt die
Menge der Zellen ein, die den Raum ausfüllen, der durch die
Achsen in der Select- Klausel aufgespannt werden.
4.11.3.1 Beispiele
-- =============================================
-- (c) Martin Korneffel, Stuttgart 2008
-- Grundlagen von MDX
-- =============================================
-- Teil I: Rollup und Projektion
-- 1) Rollup über alle Achsen des Cube
Select [Measures].[Size In Bytes] on Columns
From Hypercube;
-- 2) Rollup, gleiches Ergebnis wie 1)
Select ([Measures].[Size In Bytes], [Dim Content].[Cat].[All]) on Columns
From Hypercube;
-- 3) Rollup auf die Achse der Categorieen
Select ([Measures].[Size In Bytes], [Dim Content].[Cat].[Cat]) on Columns
From Hypercube;
-- 4) Rollup wie 3), zusätzlich nach Subkategorien aufgeschlüsselt
Select ([Measures].[Size In Bytes], [Dim Content].[Cat].[Cat], [Dim Content].[Sub].[Sub]) on Columns
From Hypercube;
-- 5) Wie 4) nur Matrixdarstellung
Select ([Measures].[Size In Bytes], [Dim Content].[Cat].[Cat]) on Columns,
[Dim Content].[Sub].[Sub] on Rows
From Hypercube;
-- 6) Rollup aller Categorien auf der Achse der Subkategorien
Select ([Measures].[Size In Bytes], [Dim Content].[Cat].[All]) on Columns,
[Dim Content].[Sub].[Sub] on Rows
From Hypercube;
-- Teil II: Hierarchieen
-- 7) Wie 4), nur in Zeilen angeordnet. Zusätzlich werden auch die Verdichtungen (All) aufgelistet,
-- da members alle Elemente einer Attributhierarchie auflistet
Select ([Measures].[Size In Bytes]) on Columns,
([Dim Content].[Cat].[Cat], [Dim Content].[Sub].members) on Rows
From Hypercube;
-- 8) Die Projektion wird in der Achse Cat auf den Bereich mit dem Elementschlüssel &[text] eingeschränkt
Select ([Measures].[Size In Bytes]) on Columns,
([Dim Content].[Cat].[Cat].&[text], [Dim Content].[Sub].[Sub]) on Rows
From Hypercube;
-- 9) Ergebnis wie in 8) + der All Ebene
Select ([Measures].[Size In Bytes]) on Columns,
([Dim Content].[Cat].[Cat].&[text], [Dim Content].[Sub].members) on Rows
From Hypercube;
-- 10) Gleiche Ergebnis wie in 8)
Select ([Measures].[Size In Bytes]) on Columns,
([Dim Content].[Cat].[Cat].&[text], [Dim Content].[Sub].[All].children) on Rows
From Hypercube;
-- 11) Leere Menge
Select ([Measures].[Size In Bytes]) on Columns,
([Dim Content].[Cat].&[Cat]) on Rows
From Hypercube;
-- 12) Alle Elemente der Attributhierarchie Cat
Select ([Measures].[Size In Bytes]) on Columns,
([Dim Content].[Cat].Members) on Rows
From Hypercube;
-- 13) Alle Elemente vom Attribut Cat
Select ([Measures].[Size In Bytes]) on Columns,
([Dim Content].[Cat].[CAT].Members) on Rows
From Hypercube;
-- 14) Gleiches Ergebnis wie 13
Select ([Measures].[Size In Bytes]) on Columns,
([Dim Content].[Cat].CHILDREN) on Rows
From Hypercube;
-- 15) Fehler, da es keine Ebene unterhalb von Cat in der Attributhierarchie Cat gibt
Select ([Measures].[Size In Bytes]) on Columns,
([Dim Content].[Cat].[CAT].Children) on Rows
From Hypercube;
-- 16) Abfragen in einer Multilevelhierarchie: Die Elemente sind ausgewählte Kombinationen der Elemente aus
-- den Attributhierarchieen Cat und Sub. Die Select- Projektion blendet dabei den Teil aus Cat aus.
Select ([Measures].[Size In Bytes]) on Columns,
([Dim Content].[Hierarchie].[Sub].Members) on Rows
From Hypercube;
-- 17) Im Vergleich zu 16) nochmals die Elemente aus der Attributhierarchie Sub
Select ([Measures].[Size In Bytes]) on Columns,
([Dim Content].[Sub].[Sub].Members) on Rows
From Hypercube;
-- 18) In der Multilevel- Attributhierarchie hat ein Element aus Cat viele Kinder
Select ([Measures].[Size In Bytes]) on Columns,
([Dim Content].[Hierarchie].[Cat].&[picture].Children) on Rows
From Hypercube;
-- 19) In der einfachen Attributhierarchie hat ein Element aus Cat keine Kinder !
Select ([Measures].[Size In Bytes]) on Columns,
([Dim Content].[Cat].[Cat].&[picture].Children) on Rows
From Hypercube;
-- Teil III: Arbeiten mit Mengen
-- 20) Rollup auf die Jahre 2005 und 2006
select ({[Dim Zeit].[Jahr].&[2005-01-01T00:00:00], [Dim Zeit].[Jahr].&[2006-01-01T00:00:00]}, [Measures].[Size In Bytes]) on 0
from Hypercube;
-- 21) Rollup über alle Achsen, eingeschränkt auf die Jahre 2005 und 2006
select ([Measures].[Size In Bytes]) on 0
from Hypercube
where {[Dim Zeit].[Jahr].&[2005-01-01T00:00:00], [Dim Zeit].[Jahr].&[2006-01-01T00:00:00]};
-- 22) Rollup auf die Jahre 2005 und 2006, eingeschränkt auf jpg- Dateien
select ({[Dim Zeit].[Jahr].&[2005-01-01T00:00:00], [Dim Zeit].[Jahr].&[2006-01-01T00:00:00]}, [Measures].[Size In Bytes]) on 0
from Hypercube
where [Dim File Type].[FileType].&[581]; -- jpg- Dateien
-- 23) Rollup auf die Jahre 2005 und 2006, eingeschränkt auf jpg- und gif- Dateien
select ({[Dim Zeit].[Jahr].&[2005-01-01T00:00:00], [Dim Zeit].[Jahr].&[2006-01-01T00:00:00]}, [Measures].[Size In Bytes]) on 0
from Hypercube
where {[Dim File Type].[FileType].&[581], -- jpg
[Dim File Type].[FileType].&[565]}; -- gif- Dateien
-- 24) Rollup auf die Jahre zwischen 2005 und 2007 und den Dateitypen
select ({[Dim Zeit].[Jahr].&[2005-01-01T00:00:00] : [Dim Zeit].[Jahr].&[2007-01-01T00:00:00]},
[Measures].[Size In Bytes]) on 0,
([Dim File Type].[FileType].[FileType]) on 1
from Hypercube
4.11.3.2 Filtern
Select- und Where- Klausel schränken
die Menge der Zellen über die Achsen ein. Es ist aber bei
Analysen auch notwendig, über die Werte von Measures
einzuschränken. In diesem Fall kann auf den Achsen mittels der
Filter- Funktion Zellen herausgefiltert werden:
-- =============================================
-- (c) Martin Korneffel, Stuttgart 2008
-- Filtern
-- =============================================
-- 1) Ungefilterte Menge aller Bild- Dateien
Select [Dim File Type].[FileType].[FileType] on 0
from Hypercube
where {[Dim Content].[Hierarchie].[Cat].&[picture]};
-- 2) Filtern der Menge aller Bild- Dateien, die kleiner als 1MB sind
Select Filter( [Dim File Type].[FileType].[FileType], [Measures].[Size In Bytes] < (1024 * 1024)) on 0
from Hypercube
where {[Dim Content].[Hierarchie].[Cat].&[picture]};
-- 3) Ausblenden aller Attribut- Elemente, die leer sind
Select Nonempty(Filter( [Dim File Type].[FileType].[FileType], [Measures].[Size In Bytes] < (1024 * 1024))) on 0
from Hypercube
where {[Dim Content].[Hierarchie].[Cat].&[picture]};
4.11.3.3 Sortieren
Das Ergebnis einer Abfrage wird per Default in der
Reihenfolge der Elemente auf den Achsen ausgegeben. Durch Einsatz der
Order- Funktion können die Elemente z.B. nach einem
Measure umsortiert werden.
-- =============================================
-- (c) Martin Korneffel, Stuttgart 2008
-- Sortieren
-- =============================================
-- I) Sortieren auf Measures
-- 1) Menge aller Bild- Dateien > 1 MB, unsortiert
Select Nonempty(
Filter(
[Dim File Type].[FileType].[FileType],
[Measures].[Size In Bytes] < (1024 * 1024)
)
) on 0
from Hypercube
where {[Dim Content].[Hierarchie].[Cat].&[picture]};
-- 2) Menge aller Bild- Dateien > 1 MB, nach Größe aufsteigend sortiert
Select Order(
Nonempty(
Filter(
[Dim File Type].[FileType].[FileType],
[Measures].[Size In Bytes] < (1024 * 1024)
)
), [Measures].[Size In Bytes], asc) on 0
from Hypercube
where {[Dim Content].[Hierarchie].[Cat].&[picture]};
-- 3) Menge aller Bild- Dateien > 1 MB, nach Größe absteigend sortiert
Select Order(
Nonempty(
Filter(
[Dim File Type].[FileType].[FileType],
[Measures].[Size In Bytes] < (1024 * 1024)
)
), [Measures].[Size In Bytes], desc) on 0
from Hypercube
where {[Dim Content].[Hierarchie].[Cat].&[picture]};
-- II) Sortieren auf Achsen
-- 4) Projektion der Dateigrößen auf die Achse der Dateitypen
Select [Measures].[Size In Bytes] on 0,
Nonempty([Dim File Type].[FileType].[FileType]) on 1
From Hypercube;
-- 5) Projektion der Dateigrößen auf die Achse der Dateitypen. Die Achse der Dateitypen wird
-- in absteigender Sortierreihenfolge ausgegeben
Select [Measures].[Size In Bytes] on 0,
Order(Nonempty([Dim File Type].[FileType].[FileType]), TupleToStr([Dim File Type].[FileType].CurrentMember), desc) on 1
From Hypercube;
4.11.3.4 Drillthrough
In OLAP- Analysen werden häufig Aussagen aus
den verdichteten Daten gewonnen. Zwecks Überprüfung der
Aussagen und Detailanalysen ist auch die Umkehrung des
Verdichtungsprozesses wichtig: aus welchen Dateildaten setzt sich
eine Aggregation zusammen ? Dazu bietet MDX den Drillthrough -
Befehl:
-- Liste aller Datensätze, die zum [Dim Content].[Cat].&[picture].All Element aggregiert werden.
DRILLTHROUGH select [Dim Content].[Cat].&[picture] on columns from Hypercube;
4.11.4 Berechnete Measures
Durch MSX- Formeln können neue Measure aus
bereits existierenden berechnet werden.
CREATE MEMBER CURRENTCUBE.[MEASURES].[MaxAgeInWeeks]
AS [Measures].[MaxAgeInDays]/7,
FORMAT_STRING = "#",
VISIBLE = 1;
Ergebnis:
Zeilennummer
|
Cat
|
Sub
|
File
|
SizeInKb
|
MaxAgeInDays
|
MaxAgeInWeeks
|
1
|
Bild
|
Foto
|
a
|
1
|
700
|
100
|
2
|
Bild
|
Foto
|
b
|
5
|
49
|
7
|
3
|
Bild
|
all
|
|
6
|
749
|
107
|
4
|
Bild
|
Chart
|
c
|
3
|
21
|
3
|
5
|
Bild
|
Chart
|
d
|
7
|
35
|
5
|
6
|
Bild
|
all
|
|
10
|
56
|
8
|
7
|
all
|
|
|
16
|
805
|
115
|
Weitere Beispiele
Berechneter Measures:
// Summe aller Dateigrößen in Byte
CREATE MEMBER CURRENTCUBE.[MEASURES].AllSize
AS ( [Measures].[Size In Bytes],
[Dim Dir Hierarchy 2].[Parent Id].[All],
[DimServerZeit].[JahrQuartalMonatDatum].[All],
[Dim Content 2].[Content].[All],
[Dim File Type 2].[Dim File Type].[All]),
VISIBLE = 1 ;
// Summe aller Dateigrößen in Byte mittels Root- Funktion
CREATE MEMBER CURRENTCUBE.[MEASURES].AllSize2
AS ( [Measures].[Size In Bytes],
Root([Dim Dir Hierarchy 2]),
Root([DimServerZeit]),
Root([Dim Content 2]),
Root([Dim File Type 2])),
VISIBLE = 1 ;
// Relativer Anteil einer Datei am Gesamten Speichervolumen
CREATE MEMBER CURRENTCUBE.[MEASURES].SizeRelativ
AS (100 * [Measures].[Size In Bytes])/([Measures].[AllSize]),
VISIBLE = 1 ;
// Summe der Dateien Pro Jahr
CREATE MEMBER CURRENTCUBE.[MEASURES].SizePerAnno
AS ([Measures].[Size In Bytes], [DimServerZeit].[Jahr]),
VISIBLE = 1 ;
// Differenz des aktuellen Anteils zum Vorjahr
CREATE MEMBER CURRENTCUBE.[MEASURES].DiffPerAnno
AS ([Measures].[Size In Bytes], [DimServerZeit].[Jahr])-([Measures].[Size In Bytes], [DimServerZeit].[Jahr].currentmember.prevmember) ,
VISIBLE = 1 ;
// Aufsummierung der Anteile vom Beginn an
CREATE MEMBER CURRENTCUBE.[MEASURES].SumPerAnno
AS sum(([Measures].[Size In Bytes], {[DimServerZeit].[Jahr].&[2000-01-01T00:00:00] : [DimServerZeit].[Jahr]})),
VISIBLE = 1 ;
// Wachstum pro Jahr
CREATE MEMBER CURRENTCUBE.[MEASURES].GrowthPerAnno
AS sum(([Measures].[Size In Bytes], {[DimServerZeit].[Jahr].&[2000-01-01T00:00:00] : [DimServerZeit].[Jahr]}))
- sum(([Measures].[Size In Bytes], {[DimServerZeit].[Jahr].&[2000-01-01T00:00:00] : [DimServerZeit].[Jahr].currentmember.prevmember})),
VISIBLE = 1 ;
4.11.5 Berechnete Elemente von Hierarchien
Durch MDX- Formeln können Hierarchien um
berechnete Elemente erweitert werden. Für jedes Measure wird ein
Wert gemäß der MDX Formel aus dem berechneten Element
berechnet. Beispiel: In der Hierarchie DimContent wird ein Element
eingefügt, welches das Verhältnis des Speicherplatzbedarfes
von Bildern zu Texten wiedergibt. Das Entsprechende
Kalkulationsscript ist folgendes:
CREATE MEMBER CURRENTCUBE.[Dim Content].[Hierarchie].[All].[V]
AS [Dim Content].[Hierarchie].[Cat].&[Bilder].value/[Dim Content].[Hierarchie].[Cat].&[Texte].value,
VISIBLE = 1;
Als Resultat entsteht folgende Struktur im Cube:
|
Hyperwürfel
|
|
Dimension FileContent
|
Measures
|
Zeilennummer
|
Cat
|
Sub
|
File
|
SizeInKb
|
MaxAgeInDays
|
1
|
Bild
|
Foto
|
a
|
1
|
100
|
2
|
Bild
|
Foto
|
b
|
5
|
30
|
3
|
Bild
|
all
|
|
6
|
130
|
4
|
Bild
|
Chart
|
c
|
3
|
20
|
5
|
Bild
|
Chart
|
d
|
7
|
40
|
6
|
Bild
|
all
|
|
10
|
50
|
7
|
all
|
|
|
16
|
180
|
8
|
Text
|
Wissen
|
e
|
1
|
80
|
9
|
Text
|
all
|
|
1
|
80
|
10
|
all
|
|
|
1
|
80
|
11
|
V
|
|
|
10
|
2
|
Eine andere Variante wäre wie folgt:
CREATE MEMBER CURRENTCUBE.[Dim Content].[Hierarchie].[Cat].&[Bilder].[V2]
AS [Dim Content].[Hierarchie].[Cat].&[Bilder].&[Foto].value/[Dim Content].[Hierarchie].[Cat].&[Bilder].&[Chart].value,
VISIBLE = 1 ;
Als Resultat entsteht folgende Struktur im Cube:
|
Hyperwürfel
|
|
Dimension FileContent
|
Measures
|
Zeilennummer
|
Cat
|
Sub
|
File
|
SizeInKb
|
MaxAgeInDays
|
1
|
Bild
|
Foto
|
a
|
1
|
100
|
2
|
Bild
|
Foto
|
b
|
5
|
30
|
3
|
Bild
|
all
|
|
6
|
130
|
4
|
Bild
|
Chart
|
c
|
3
|
20
|
5
|
Bild
|
Chart
|
d
|
7
|
40
|
6
|
Bild
|
all
|
|
10
|
50
|
7
|
V2
|
|
|
0,6
|
1,1
|
8
|
all
|
|
|
16
|
180
|
9
|
Text
|
Wissen
|
e
|
1
|
80
|
10
|
Text
|
all
|
|
1
|
80
|
11
|
all
|
|
|
1
|
80
|
4.12 Endbenutzermodell
4.12.1 KPI's
KPI steht für Key Performance Indicator.
Ein KPI ist eine serverbasiert. Er generiert aus den Cubedaten ein
Qualitätsmaß wie folgt:
KPI := (Istwert, Sollwert, Status, Trend)
4.12.2 Aktionen
Aktionen sind auf dem Server gespeicherte MDX-
Abfragen. Sie werden in der Regel von Clients geladen und ausgeführt.
SSAS unterscheidet folgende Aktionstypen:
Aktionstyp
|
Beschreibung
|
Anweisung
|
Führt einen OLE DB- Befehl aus, z.B. zur
Datenmanipulation
|
Berichterstellung
|
Sendet eine Anforderung an die Reporting
Services zur Erstellung eines Berichts. Dabei wird der
BErichtspfad mit optionalen Berichtsparametern definiert
|
Dataset
|
Gibt ein Dataset an die Clientanwendung
zurück.
|
Drillthrough
|
Ermöglicht Clientanwendungen den Zugriff
auf Detailinformationen von Cubezellen. Ist der einzige
Aktionstyp, der von SSAS und nicht von den
Clientanwendungen ausgeführt wird.
|
Properitär
|
Clientspezifische Aktion.
|
Rowset
|
Gibt ein Rowset an eine Clientanwendung
zurück, beispielsweise eine SQL- Abfrage auf eine RDBM
|
URL
|
Zeig im Internetbrowser eine veränderliche
Seite an und sollte ein Standardprotokoll wie http, https, ftp
etc. verwenden
|
Beispiel:
Im Cube HC1 wird eine Drillthrough Aktion
definiert, die für Zellen über den Measures FactFiles
die Detaildaten zurückgibt. Im Aktionsplaner sind folgende
Eintragungen vorzunehmen:
Zeile
|
Eintrag
|
Name
|
Drillthrough Fact Files
|
Measuregruppenelemente
|
Fact Files
|
Bedingung
|
(leer)
|
Drillthroughspalten
|
Dimension= MEASURES; Rückgabe=
SizeInBytes, Photo Content, Office Content, ...
Dimension= DimServerZeit; Rückgabe=Datum
|
Bschriftung
|
Drillthrough Files
|
Nach Bereitstellen und
Verarbeiten kann im Browser z.B. zum Measure SizeInBytes über
der Dimension DimServerZeit über das Kontextmenü die
Drillthroug- Aktion ausgelöst werden.
4.12.3 Perspektiven und Übersetzungen
Die mit SSAS gewonnen
Informationen sind für verschiedene Kreise von
Entscheidungsträgern bestimmt. Für jeden Kreis kann die
Menge verdichteter Informationen durch Perspektiven weiter
eingeschränkt werden, und mittels Übersetzungen die
Bezeichner der Dimensionen und Measures in der Landessprache
angeboten werden. Perspektiven werden in Ihrer Funktion häufig
mit den Views des SQL- Servers verglichen.
4.13 Dataminig
4.13.1 Minigstrukturen
4.13.2 Minigmodelle
4.13.3 Minigmodell-Viewer
4.13.4 Minigmodellvorhersage