Posts mit dem Label Dimensions werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Dimensions werden angezeigt. Alle Posts anzeigen

2011-04-10

Mit Cubes und Dimensionen arbeiten 5: Aggregations

Ein weiterer Artikel in der Serie zum Microsoft SQL Server 2008 Analysis Services.


Wobei dies gar kein vollständiger Artikel ist, sondern vielleicht eher eine Randnotiz:



Die Query-Zeit lässt sich drastisch durch vorberechnete Cube-Werte reduzieren. Dafür wird dann allerdings mehr Speicher benötigt und die Aufbereitung des Cubes dauert natürlich länger. 
Das Querylog kann als Parameter verwendet werden, das heißt, das automatisch häufig gestellte Anfragen vorberechnet werden und selten gestellte Anfragen erst on-the-fly beim Absetzen der Query.



2011-04-06

Mit Cubes und Dimensionen arbeiten 3: Best Practices Dimension Design

Ein weiterer Artikel in der Serie zum Microsoft SQL Server 2008 Analysis Services.


In diesem Artikel geht es um Best Practice Empfehlungen von Microsoft bei der Entwicklung von Cubes und Dimensionen für den SSAS.
  • Wenn immer möglich: Attribut-Relationen herstellen -> Performance, Integrität, ...
  • keine Attribute erzeugen, die nicht verwendet werden
  • keine redundanten Attribut-Relationen erzeugen. Existieren zB. A -> B und B -> C, dann ist Relation A -> C redundant -> kein Benefit, könnte aber Probleme verursachen
  • Dimension- u. Attribute-Type Property korrekt setzen, für Zeit-, Account- u. geographische Dimensionen
    • Type-Property immer für Dim. u. Attr. setzen.
    • Time-Attribute richtig interpretieren: [Month] vs. [Month of Year]

2011-04-04

Mit Cubes und Dimensionen arbeiten 2: Attribute

Ein weiterer Artikel in der Serie zum Microsoft SQL Server 2008 Analysis Services.


Attribute sortieren
Jedes Attribut kann zur Sortierung herangezogen werden
  • by name: alphabetisch
  • by key: Hierarchiestufe wählbar, zB. 
    • Key: Quarter -> alle Jahre unter Q1, Q2, ...
    • Key: Quarter + Year -> Q1 2000, Q2 2000, ..., Q1 2001, ...
  • by secondary attribute: alle Attribute, auch berechnete

Attribute gruppieren
Übersicht, Organisation der Members, zB. Kunden in Einkommensgruppen
  • Equal Areas: gleiche Anzahl Members pro Group
  • Clusters: basierend auf Trainingsdaten
  • DistinctionBucketCount property: Anzahl Buckets, default: Wurzel aus distinct Members

2011-02-15

Mit Cubes und Dimensionen arbeiten 1: Hierarchien

Dies ist die Fortsetzung der Serie zum Microsoft SQL Server 2008 Analysis Services. Es gibt bereits einen Artikel Allgemeine Informationen für Anwender und Einen DWH Cube erzeugen mit MS SQL Server 2008.

Dimensionen organisieren Daten in Relation zu einem Interessengebiet, zB. Kunden, Filialen, Mitarbeiter, User. Dimensionen enthalten Attribute, die mit Spalten in DimensionTables korrelieren. Diese Attribute erscheinen als Attribut-Hierarchien und können auf verschiedene Arten organisiert werden. (Die Arten werden weiter unten aufgelistet.) Dies ist abhängig von dem darunterliegenden DimensionTables. Hierarchien werden verwendet, um die im Cube enthaltenen Measures zu organisieren.

Attribute Column Binding
Um die Anzeige von Attributen zu kontrollieren, kann man folgende Punkte einer Column definieren:

  • KeyColumn: Schlüssel-Connection zur FactTable (heißt Primarykey)
  • NameColumn: Wert, den User sieht, ZB. CalculatedValue (IF 1 THEN 'W' oder CustomerName statt CustmerID)
  • ValueColumn: Wert, der von der MDX Membervalue-Funktion zurückgegeben wird. (Bsp. Zeitdim: Day-KeyColmnn ist SMALLINT, Day-ValueColumn ist SMALLDATETIME <- ermöglicht Berechnung ohne String-Casting


Hierarchien

  • Balanced Hierarchy: Land -> Bundesland -> Stadt -> PLZ
  • Unbalanced Hierarchy: Familienstand -> Geschlecht (schlecht in Performance)
  • Parent-Child Hierarchy: Self-Join in DimTable, zB. Familienstammbaum (unbalanced)
  • Ragged Hierarchies: Wie Parent-Child, aber Joins über unterschiedliche Spalten, zB: Land -> Bundesland -> ..., wobei Bundesland nur in Deutschland verwendet wird, nicht in der Schweiz
    -> HideMemberIf macht aus Balanced~ eine Ragged~. Mögliche Werte:
    • Never: => Balanced
    • OnlyChildWithNoName: Verbirgt alle Childs mit null oder Leer String-Wert
    • OnlyChildWithParentName: Verbirgt alle Childs mit Wert = Patent-Wert. ZB. HH->HH, wenn Statt unterstes Level
    • NotName: alle null oder Leer-String Werte
    • ParentName: alle mit Namen wie Parent. ZB. HH->HH, auch wenn noch PLZ folgt


Hierarchien verwenden

  • isAggregatable: "ALL"-Level erzeugen?
  • AttributeHierarchyOrdered: False -> Performance-Gewinn, wenn kein Zugriff
  • AttributeHierarchyOptimizedState: Not Optimized -> keine Indizes werden erzeugt -> kürzere Processing-Zeit, längere Query-Zeit
  • Hierarchien und Attribute disablen -> Performance-Gewinn, Übersichtlichkeit User 
    • AttributeHierarchyEnabled
    • AttributeHierarchyVisible: Attribut nur in user-definierten Hierarchien sichtbar

Es folgt in Kürze 'Mit Cubes und Dimensionen arbeiten 2: Attribute'