Inhaltsverzeichnis         

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:

  1. Redundanzfreie Speicherung großer Datenmengen in normalisierten Tabellensystemen

  2. 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.

  1. Speicherung verdichteter Geschäftsdaten (z.B. Umsatzzahlen pro Monat) in denormalisierten Tabellensystemen, durch die Gruppierung und Aggregation beschleunigt wird (Datawarehouse)

  2. kurze Antwortzeiten bei Analyse großer Datenmengen

  3. Analysen und Berechnungen im Stile von Tabellenkalkulationen (Cube)

  4. 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.

  • täglichen Umsatzzahlen eines Unternehmens

  • die Größe einer Datei in Bytes


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:

  1. 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

  2. Komplexe Berechnungsmöglichkeiten: Auf der Grundlage von MDX können über Formeln aus Cubedaten neue Informationen abgeleitet werden

  3. Endbenutzermodell: KPI als Kennzahlen für Geschäftsverläufe werden bereitgestellt. Metadaten können in verschiedene Sprachen übersetzt und so globalisiert werden.

  4. 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

  1. Neues Analysis Service Projekt in BIDS mit dem Namen DmsMinAnalysis anlegen

  2. In Projekmappenexplorer R-Click auf Cube und Cubedesigner starten

  3. Erzeugen der Faktentabellen- Schemen (Measures)

    1. Measure Name: Size, Typ: BigInt, Measuregruppe: FactFiles anlegen

  4. Erzeugen der Zeit- Dimension

    1. Kein SCD (Granularität = Tage)

    2. Zeitraum: 1.1.2005 bis 31.12.2007

    3. Sprache für Attributnamen: Deutsch

  5. Dimension einer Faktentabelle zuordnen

    1. Zeitdimension der FactFiles Tabelle zuordnen

  6. Fertigstellen

4.4.2 2) Cube anpassen

4.4.2.1 Weitere Dimensionen erstellen und dem Cube hinzufügen

  1. Erzeugen der Dimension zum Inhaltstyp

    1. R- Click auf Dimension im Projekmappenexplorer, Dimension auswählen-> der Dimensionsassistent startet

    2. Erstellen als: Standarddimension, Typ regulär, Schlüsselattribut automatisch, Name der Dimension: DimContent

    3. Nachbearbeiten der Dimension im Dimensionsdesigner:

      1. Umschalten auf Rasteranzeige

      2. Schlüsselattribut anpassen: Typ: Integer, Namensspalte: eigene Spalte

      3. Attribut Category und Type hinzufügen. Beide vom Typ WChar, Regular und Namensspalte "Wie Schlüssel"

      4. natürliche Hierarchie anlegen: Attribute Category und Type in den Hierarchie- Designer ziehen

  2. Zuordnen der Dimension an Measures eines Cube

    1. Im Cubedesigner/Dimensionen die Dimension DimContent als Cubedimension hinzufügen

    2. 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:

  1. DimContent Schlüssel auf Identity einstellen

4.4.4 4) DmsMinDw Datawarehouse mit Daten füllen

  1. Datenbank DmsMin anhängen

  2. 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

  1. Verteilung des Speichervolumens auf die Dateitypen

  2. Anzahl der Dateien pro Dateityp

  3. 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

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

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:

  1. Key: Es wird nach dem Attributschlüssel sortiert

  2. Name: Es wird nach der Name (NameColumn) Eigenschaft sortiert

  3. AttributeKey: Es wird Nach dem Attributschlüssel des in OrderByAttribute festgelegten Attributes sortiert

  4. 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:

  1. Sortieren von Dim Product Category und Dim Product Subcategory nach der Eigenschaft Name

  2. 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:

  1. Umbenennen der Dim Product Category - Dim Product Subcategory Multilevel- Hierarchie in Produkte

  2. 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

  1. NonLeafDataVisible: In der erzeugten Hierarchie erscheinen die Zwischenknoten nochmals als zusätzliche Elemente in der unteren Ebene

  2. 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:

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:

  1. Zeitdimension aus der AdventureWorksDW Tabelle DimTime erstellen. Name- Spalte des Dimensionsschlüssels auf FullDateAlternetKey umstellen.

  2. 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 :

  1. neue Rollen erstelle

  2. Den Rollen Zugriffsrechte einräumen

  3. 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...

  1. Wenn eine Attributhierarchie (= Attributlist) kein Element bezeichnet, dann wird diese wie folgt ergänzt:

    1. Wenn ein Standardelement für die Attributhierarchie definiert wurde, dann wird die Attributliste zu der des Standardelementes ergänzt

    2. Andernfalls

      1. Wenn für die Attributhierarchie die Eigenschaft IsAggregatable=true gesetzt, dann wird die Attributliste zu der des All- Elemntes ergänzt

      2. Andernfalls

        1. Die Attributliste wird zu der des ersten Elements in der Attributhierarchie ergänzt

  2. Wenn für eine Measuregroup kein Element durch eine Attributliste definiert wurde, dann wird diese wie folgt ergänzt:

    1. Wenn ein Standarmeasure für die Measuregroup definiert ist, dann wird die Attributliste zum dem des Standardelementes ergänzt

    2. 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ß

  1. die Measure- Spalte ausgewählt werden

  2. 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:

  1. 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)

  2. From- Klausel

    Definiert den Cube der Olap- Datenbank, aus dem die Daten entnommen werden (z.B. DMS-Cube)

  3. 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

  1. Dimension= MEASURES; Rückgabe= SizeInBytes, Photo Content, Office Content, ...

  2. 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