Ich muss herausfinden, welche Kategorie von Büchern am meisten ausgeliehen wurde. Ich habe also das folgende UML-Diagramm.

Bei der Erstellung der Dimensionstabellen und der Faktentabelle bin ich auf Folgendes gekommen:

Die Zuordnungstabelle Auth (Dimension) scheint jedoch nicht richtig zu sein. Gibt es einen Fehler und wie kann ich ihn beheben? Bearbeiten: Wahrscheinlich sollten keine Kategorie- und Publisher-Dimensionstabellen vorhanden sein. Sie sollten mit Buch beigefügt werden.

1 Antwort 1

Ihr dimensionales Modell muss neu gestaltet werden.

Die Faktentabelle muss "Auth" mit den folgenden Feldern sein:

  • Mitarbeiter ID
  • Studenten ID
  • Book_ID
  • Ausstellungsdatum
  • Geliehen_Bis

Dann benötigen Sie 4 Maßtabellen:

  • Personal (enthält Personalschlüssel, Personalattribute, Bibliotheksattribute)
  • Student (Studentenschlüssel, Studentenattribute)
  • Buch (Buchschlüssel, Buchattribute, Verlag, Kategorie)
  • Kalender (Datumsschlüssel, Kalenderattribute) Möglicherweise benötigen Sie einen zweiten Kalender für Borrowed_Till.

Inhalt

Die Bemaßungsattribute vom Typ 0 ändern sich nie und werden Attributen zugewiesen, die dauerhafte Werte haben oder als "Original" bezeichnet werden. Beispiele: Geburtsdatum, Ursprüngliche Kredit-Score. Typ 0 gilt für die meisten Datumsdimensionsattribute.

Diese Methode überschreibt alte mit neuen Daten und verfolgt daher keine historischen Daten.

Beispiel einer Lieferantentabelle:

Supplier_KeyLieferantencodeName des AnbietersSupplier_State
123ABCAcme Supply CoCA.

Im obigen Beispiel ist Supplier_Code der natürliche Schlüssel und Supplier_Key ist ein Ersatzschlüssel. Technisch ist der Ersatzschlüssel nicht erforderlich, da die Zeile durch den natürlichen Schlüssel (Supplier_Code) eindeutig ist. Um die Leistung bei Joins zu optimieren, sollten Sie jedoch statt der Zeichentasten eine Ganzzahl verwenden (es sei denn, die Anzahl der Bytes in der Zeichentaste ist geringer als die Anzahl der Bytes in der Ganzzahl).

Wenn der Lieferant den Hauptsitz nach Illinois verlegt, wird der Datensatz überschrieben:

Supplier_KeyLieferantencodeName des AnbietersSupplier_State
123ABCAcme Supply CoIL

Der Nachteil der Typ 1-Methode besteht darin, dass im Data Warehouse keine Historie vorhanden ist. Es hat jedoch den Vorteil, dass es leicht zu warten ist.

Wenn eine Aggregattabelle berechnet wurde, in der die Fakten nach Status zusammengefasst sind, muss sie neu berechnet werden, wenn der Supplier_State geändert wird.

Diese Methode verfolgt historische Daten, indem mehrere Datensätze für einen bestimmten natürlichen Schlüssel in den Maßtabellen mit separaten Ersatzschlüsseln und / oder verschiedenen Versionsnummern erstellt werden. Für jede Beilage bleibt eine unbegrenzte Historie erhalten.

Wenn der Lieferant beispielsweise nach Illinois umzieht, werden die Versionsnummern nacheinander erhöht:

Supplier_KeyLieferantencodeName des AnbietersLieferantAusführung
123ABCAcme Supply CoCA.0
124ABCAcme Supply CoIL1

Eine andere Methode ist das Hinzufügen von Spalten mit dem Datum des Inkrafttretens.

Supplier_KeyLieferantencodeName des AnbietersSupplier_StateAnfangsdatumEndtermin
123ABCAcme Supply CoCA.2000-01-01T00: 00: 002004-12-22T00: 00: 00
124ABCAcme Supply CoIL2004-12-22T00: 00: 00NULL

Das Startdatum / die Startzeit der zweiten Zeile entspricht dem Enddatum / der Endzeit der vorherigen Zeile. Das Null-End_Date in Zeile zwei gibt die aktuelle Tupelversion an. Stattdessen kann ein standardisiertes hohes Ersatzdatum (z. B. 9999-12-31) als Enddatum verwendet werden, damit das Feld in einen Index aufgenommen werden kann und bei der Abfrage keine Nullwertersetzung erforderlich ist.

Bei einer dritten Methode werden ein Datum des Inkrafttretens und ein aktuelles Flag verwendet.

Supplier_KeyLieferantencodeName des AnbietersSupplier_StateGültigkeitsdatumCurrent_Flag
123ABCAcme Supply CoCA.2000-01-01T00: 00: 00N
124ABCAcme Supply CoIL2004-12-22T00: 00: 00Y.

Der Current_Flag-Wert von 'Y' gibt die aktuelle Tupelversion an.

Transaktionen, die auf einen bestimmten Ersatzschlüssel (Supplier_Key) verweisen, werden dann permanent an die Zeitscheiben gebunden, die in dieser Zeile der sich langsam ändernden Dimensionstabelle definiert sind. Eine aggregierte Tabelle, in der die Fakten nach Status zusammengefasst sind, spiegelt weiterhin den historischen Status wider, d. H. Den Status, in dem sich der Lieferant zum Zeitpunkt der Transaktion befand. Eine Aktualisierung ist nicht erforderlich. Um die Entität über den natürlichen Schlüssel zu referenzieren, muss die eindeutige Einschränkung entfernt werden, die die referenzielle Integrität durch DBMS unmöglich macht.

Wenn rückwirkende Änderungen am Inhalt der Dimension vorgenommen werden oder wenn der Dimension neue Attribute hinzugefügt werden (z. B. eine Sales_Rep-Spalte), deren Gültigkeitsdatum von den bereits definierten Daten abweicht, kann dies dazu führen, dass die vorhandenen Transaktionen geändert werden müssen aktualisiert, um die neue Situation widerzuspiegeln. Dies kann eine teure Datenbankoperation sein, daher sind SCDs vom Typ 2 keine gute Wahl, wenn sich das dimensionale Modell ändern kann.

Diese Methode verfolgt Änderungen mithilfe separater Spalten und behält den eingeschränkten Verlauf bei. Der Typ 3 behält eine begrenzte Historie bei, da er auf die Anzahl der Spalten beschränkt ist, in denen historische Daten gespeichert werden sollen. Die ursprüngliche Tabellenstruktur in Typ 1 und Typ 2 ist dieselbe, Typ 3 fügt jedoch zusätzliche Spalten hinzu. Im folgenden Beispiel wurde der Tabelle eine zusätzliche Spalte hinzugefügt, um den ursprünglichen Status des Lieferanten aufzuzeichnen. Es wird nur der vorherige Verlauf gespeichert.

Supplier_KeyLieferantencodeName des AnbietersOriginal_Supplier_StateGültigkeitsdatumAktueller_Lieferantenzustand
123ABCAcme Supply CoCA.2004-12-22T00: 00: 00IL

Dieser Datensatz enthält eine Spalte für den ursprünglichen und den aktuellen Status. Änderungen können nicht nachverfolgt werden, wenn der Lieferant ein zweites Mal umsiedelt.

Eine Variation davon besteht darin, das Feld Previous_Supplier_State anstelle von Original_Supplier_State zu erstellen, das nur die letzte historische Änderung verfolgt.

Das Typ 4 Diese Methode wird normalerweise als "Verlaufstabellen" bezeichnet, wobei eine Tabelle die aktuellen Daten enthält und eine zusätzliche Tabelle verwendet wird, um einige oder alle Änderungen aufzuzeichnen. In der Faktentabelle wird auf beide Ersatzschlüssel verwiesen, um die Abfrageleistung zu verbessern.

Im obigen Beispiel lautet der ursprüngliche Tabellenname Lieferant und die Verlaufstabelle ist Lieferantenhistorie.

Lieferant
Supplier_keyLieferantencodeName des AnbietersSupplier_State
124ABCAcme & Johnson Supply CoIL
Lieferantenhistorie
Supplier_keyLieferantencodeName des AnbietersSupplier_StateErstellungsdatum
123ABCAcme Supply CoCA.2003-06-14T00: 00: 00
124ABCAcme & Johnson Supply CoIL2004-12-22T00: 00: 00

Diese Methode ähnelt der Funktionsweise von Datenbanküberwachungstabellen und Änderungsdatenerfassungstechniken.

Es gibt keinen SCD-Typ 5.

Das Geben Sie 6 ein Methode kombiniert die Ansätze der Typen 1, 2 und 3 (1 + 2 + 3 = 6). Eine mögliche Erklärung für die Entstehung des Begriffs war, dass er von Ralph Kimball während eines Gesprächs mit Stephen Pace von Kal geprägt wurde Zitat benötigt . Ralph Kimball nennt diese Methode "Unvorhersehbare Änderungen mit Single-Version-Overlay" in Das Data Warehouse-Toolkit.

Die Lieferantentabelle beginnt mit einem Datensatz für unseren Beispiellieferanten:

Supplier_KeyRow_KeyLieferantencodeName des AnbietersAktuellen ZustandHistorischer_StaatAnfangsdatumEndterminCurrent_Flag
1231ABCAcme Supply CoCA.CA.2000-01-01T00: 00: 009999-12-31T23: 59: 59Y.

Der Current_State und der Historical_State sind gleich. Das optionale Current_Flag-Attribut gibt an, dass dies der aktuelle oder neueste Datensatz für diesen Lieferanten ist.

Wenn Acme Supply Company nach Illinois zieht, fügen wir einen neuen Datensatz hinzu, wie bei der Verarbeitung von Typ 2, jedoch ist ein Zeilenschlüssel enthalten, um sicherzustellen, dass wir für jede Zeile einen eindeutigen Schlüssel haben:

Supplier_KeyRow_KeyLieferantencodeName des AnbietersAktuellen ZustandHistorischer_StaatAnfangsdatumEndterminCurrent_Flag
1231ABCAcme Supply CoILCA.2000-01-01T00: 00: 002004-12-22T00: 00: 00N
1232ABCAcme Supply CoILIL2004-12-22T00: 00: 009999-12-31T23: 59: 59Y.

Wir überschreiben die Current_Flag-Informationen im ersten Datensatz (Row_Key = 1) mit den neuen Informationen, wie bei der Verarbeitung von Typ 1. Wir erstellen einen neuen Datensatz, um die Änderungen zu verfolgen, wie bei der Verarbeitung von Typ 2. Und wir speichern den Verlauf in einer zweiten Statusspalte (Historical_State), die die Verarbeitung des Typs 3 enthält.

Wenn der Lieferant beispielsweise erneut verlagert wird, fügen wir der Lieferantendimension einen weiteren Datensatz hinzu und überschreiben den Inhalt der Spalte Current_State:

Supplier_KeyRow_KeyLieferantencodeName des AnbietersAktuellen ZustandHistorischer_StaatAnfangsdatumEndterminCurrent_Flag
1231ABCAcme Supply CoNYCA.2000-01-01T00: 00: 002004-12-22T00: 00: 00N
1232ABCAcme Supply CoNYIL2004-12-22T00: 00: 002008-02-04T00: 00: 00N
1233ABCAcme Supply CoNYNY2008-02-04T00: 00: 009999-12-31T23: 59: 59Y.

Typ 2-Ersatzschlüssel mit Typ 3-Attribut Bearbeiten

In vielen SCD-Implementierungen des Typs 2 und 6 wird der Ersatzschlüssel aus der Dimension anstelle des natürlichen Schlüssels in die Faktentabelle eingefügt, wenn die Faktendaten in das Datenrepository geladen werden. Der Ersatzschlüssel wird für einen bestimmten Faktendatensatz basierend auf seinem Gültigkeitsdatum und dem Start_Date und End_Date aus der Dimensionstabelle ausgewählt. Auf diese Weise können die Faktendaten auf einfache Weise mit den richtigen Dimensionsdaten für das entsprechende Gültigkeitsdatum verknüpft werden.

Hier ist die Lieferantentabelle, wie wir sie oben mit der Typ 6-Hybridmethode erstellt haben:

Supplier_KeyLieferantencodeName des AnbietersAktuellen ZustandHistorischer_StaatAnfangsdatumEndterminCurrent_Flag
123ABCAcme Supply CoNYCA.2000-01-01T00: 00: 002004-12-22T00: 00: 00N
124ABCAcme Supply CoNYIL2004-12-22T00: 00: 002008-02-04T00: 00: 00N
125ABCAcme Supply CoNYNY2008-02-04T00: 00: 009999-12-31T23: 59: 59Y.

Sobald die Delivery-Tabelle den richtigen Supplier_Key enthält, kann sie mithilfe dieses Schlüssels problemlos mit der Supplier-Tabelle verknüpft werden. Die folgende SQL-Anweisung ruft für jeden Faktendatensatz den aktuellen Lieferantenstatus und den Status ab, in dem sich der Lieferant zum Zeitpunkt der Lieferung befunden hat:

Reine Typ 6 Implementierung Bearbeiten

Das Vorhandensein eines Typ 2-Ersatzschlüssels für jede Zeitscheibe kann zu Problemen führen, wenn sich die Dimension ändern kann.

Eine reine Typ 6-Implementierung verwendet dies nicht, sondern verwendet einen Ersatzschlüssel für jedes Stammdatenelement (z. B. hat jeder eindeutige Lieferant einen einzelnen Ersatzschlüssel).

Dadurch werden Änderungen der Stammdaten vermieden, die sich auf die vorhandenen Bewegungsdaten auswirken.

Es werden auch mehr Optionen beim Abfragen der Transaktionen ermöglicht.

Hier ist die Lieferantentabelle nach der reinen Typ 6-Methode:

Supplier_KeyLieferantencodeName des AnbietersSupplier_StateAnfangsdatumEndtermin
456ABCAcme Supply CoCA.2000-01-01T00: 00: 002004-12-22T00: 00: 00
456ABCAcme Supply CoIL2004-12-22T00: 00: 002008-02-04T00: 00: 00
456ABCAcme Supply CoNY2008-02-04T00: 00: 009999-12-31T23: 59: 59

Das folgende Beispiel zeigt, wie die Abfrage erweitert werden muss, um sicherzustellen, dass für jede Transaktion ein Lieferantendatensatz abgerufen wird.

Ein Faktendatensatz mit dem Datum des Inkrafttretens (Delivery_Date) vom 9. August 2001 wird mit dem Supplier_Code von ABC mit dem Supplier_State von 'CA' verknüpft. Ein Faktendatensatz mit dem Datum des Inkrafttretens am 11. Oktober 2007 wird ebenfalls mit demselben Supplier_Code ABC verknüpft, jedoch mit einem Supplier_State von 'IL'.

Dieser Ansatz ist zwar komplexer, bietet jedoch eine Reihe von Vorteilen, darunter:

  1. Die referenzielle Integrität durch DBMS ist jetzt möglich, aber man kann Supplier_Code nicht als Fremdschlüssel in der Produkttabelle und Supplier_Key als Fremdschlüssel verwenden, da jedes Produkt an eine bestimmte Zeitscheibe gebunden ist.
  2. Wenn mehr als ein Datum vorhanden ist (z. B. Bestelldatum, Lieferdatum, Rechnungszahlungsdatum), kann ausgewählt werden, welches Datum für eine Abfrage verwendet werden soll.
  3. Sie können Abfragen "wie jetzt", "wie zur Transaktionszeit" oder "wie zu einem Zeitpunkt" ausführen, indem Sie die Datumsfilterlogik ändern.
  4. Sie müssen die Faktentabelle nicht erneut aufbereiten, wenn sich die Dimensionstabelle ändert (z. B. wenn Sie nachträglich zusätzliche Felder hinzufügen, die die Zeitscheiben ändern, oder wenn Sie die Daten in der Dimensionstabelle falsch eingeben, können Sie diese problemlos korrigieren). .
  5. In der Dimensionstabelle können Sie bidauerliche Daten einfügen.
  6. Sie können das Faktum mit mehreren Versionen der Dimensionstabelle verknüpfen, um in derselben Abfrage die gleichen Informationen mit unterschiedlichen Gültigkeitsdaten zu melden.

Das folgende Beispiel zeigt, wie ein bestimmtes Datum wie '2012-01-01T00: 00: 00' (das die aktuelle Datums- und Uhrzeitangabe sein kann) verwendet werden kann.

Sowohl Leihmutter als auch natürlicher Schlüssel Bearbeiten

Eine alternative Implementierung ist zu platzieren beide der Ersatzschlüssel und der natürliche Schlüssel in der Faktentabelle. Auf diese Weise kann der Benutzer die entsprechenden Dimensionsdatensätze auswählen, basierend auf:

  • das Datum des erstmaligen Inkrafttretens im Faktenbericht (oben),
  • die neuesten oder aktuellen Informationen,
  • jedes andere Datum, das dem Faktendatensatz zugeordnet ist.

Diese Methode ermöglicht flexiblere Verknüpfungen mit der Dimension, auch wenn der Typ 2-Ansatz anstelle von Typ 6 verwendet wurde.

Hier ist die Lieferantentabelle, wie wir sie möglicherweise mit der Typ-2-Methode erstellt haben:

Supplier_KeyLieferantencodeName des AnbietersSupplier_StateAnfangsdatumEndterminCurrent_Flag
123ABCAcme Supply CoCA.2000-01-01T00: 00: 002004-12-22T00: 00: 00N
124ABCAcme Supply CoIL2004-12-22T00: 00: 002008-02-04T00: 00: 00N
125ABCAcme Supply CoNY2008-02-04T00: 00: 009999-12-31T23: 59: 59Y.

Die folgende SQL-Anweisung ruft den aktuellsten Supplier_Name und Supplier_State für jeden Faktendatensatz ab:

Wenn der Faktendatensatz mehrere Daten enthält, kann der Fakt mit der Dimension unter Verwendung eines anderen Datums anstelle des primären Gültigkeitsdatums verknüpft werden. Beispielsweise kann die Tabelle "Delivery" das primäre Gültigkeitsdatum "Delivery_Date" aufweisen, aber auch jedem Datensatz ein "Order_Date" zugeordnet sein.

Die folgende SQL-Anweisung ruft den korrekten Supplier_Name und Supplier_State für jeden Faktendatensatz basierend auf dem Order_Date ab:

  • Die referenzielle Integrität durch DBMS ist nicht möglich, da zum Erstellen der Beziehung kein eindeutiger Schlüssel vorhanden ist.
  • Wenn eine Beziehung mit dem Stellvertreter hergestellt wird, um das obige Problem zu lösen, endet man mit einer Entität, die an eine bestimmte Zeitscheibe gebunden ist.
  • Wenn die Join-Abfrage nicht korrekt geschrieben ist, werden möglicherweise doppelte Zeilen zurückgegeben und / oder falsche Antworten gegeben.
  • Der Datumsvergleich funktioniert möglicherweise nicht gut.
  • Einige Business Intelligence-Tools können komplexe Verknüpfungen nicht gut generieren.
  • Die zum Erstellen der Dimensionstabelle erforderlichen ETL-Prozesse müssen sorgfältig entworfen werden, um sicherzustellen, dass sich die Zeiträume für die einzelnen Referenzdatenelemente nicht überschneiden.

Verschiedene SCD-Typen können auf verschiedene Spalten einer Tabelle angewendet werden. Beispielsweise können wir Typ 1 auf die Spalte Supplier_Name und Typ 2 auf die Spalte Supplier_State derselben Tabelle anwenden.

Subservice Dimensionstabelle

Dieser Subservice füllt Dimensionstabellen. Wie in Abbildung 12.11 dargestellt, sammelt der Subservice für Dimensionstabellen eine oder mehrere Quelltabellen aus dem Quellschema, strukturiert die Attribute auf der Grundlage des Zieldimensionstabellentyps und füllt gegebenenfalls alle erforderlichen Subdimensionstabellen wie Minimension oder Brückentabelle aus. Die Reihenfolge, in der die Tabellen ausgefüllt werden, ist: Subdimension, Dimension und Bridge.

ABBILDUNG 12.11. Dimensionstabellenservice.

Dieser Subservice füllt alle dimensionalen Tabellentypen und ihre Bausteine ​​auf, einschließlich:

Dimensionsrollen-Manager

7.2.2 Dimensionstabellen

Dimensionen (also die relationalen Dimensionstabellen) bieten einen Kontext zu den Fakten. Sie sind sehr wichtig für die Verständlichkeit des Data Warehouse. Ohne Bemaßungen wäre es nicht möglich, die in der Faktentabelle angegebenen Maße zu verstehen, da alle Bezeichnungen und anderen beschreibenden Informationen aus den Bemaßungstabellen stammen. Wie bereits im vorherigen Abschnitt erläutert, werden sie auch verwendet, um anzugeben, wie Fakten zusammengefasst werden. Sie können auch verwendet werden, um Fakten nach einem Dimensionseintrag selbst oder einem seiner beschreibenden Attribute zu filtern. Es ist auch möglich, aggregierte Messungen nach der Dimension oder einem ihrer Attribute zu sortieren. Abbildung 7.3 zeigt eine beispielhafte Dimensionstabelle.

Abbildung 7.3. Passagierdimensionstabelle (physikalische Auslegung).

Im Gegensatz zu Faktentabellen verwendet eine Dimensionstabelle a PassengerKey Schlüsselwert als Primärschlüssel der Tabelle. Dies liegt daran, dass dieser Schlüssel häufig in der Faktentabelle verwendet wird, die auf die Dimensionstabelle verweist. Um die Menge des erforderlichen Speichers zu reduzieren und die Verbindungsleistung zu verbessern, ist es sinnvoll, dies zu tun und die Verwendung eines natürlichen Schlüssels zu vermeiden. Ansonsten hat der Schlüssel keine Bedeutung für das Geschäft. Zusätzlich zu diesem technischen Schlüssel enthalten Dimensionen häufig Geschäftsschlüssel, die die Einträge in der Dimensionstabelle identifizieren. In Abbildung 7.3 ist dies der Ausweisnummer Attribut. Die Einträge repräsentieren häufig Geschäftsobjekte und die Änderungen an diesen Objekten im Betriebssystem. Während der natürliche Schlüssel für dasselbe Geschäftsobjekt derselbe bleibt, selbst wenn beschreibende Daten im Betriebssystem geändert wurden, ändert sich der Schlüssel für jede Änderung der Daten. Dieser Effekt wird von der Faktentabelle verwendet, um auf die Version der Daten zu verweisen, die zum Zeitpunkt des Ereignisses im Unternehmen aktiv waren. Der Hash-Schlüssel aus dem Data Vault 2.0-Modell wird als Schlüssel im Dimensionsmodell verwendet. Dies vereinfacht den Ladevorgang und hilft, Information Marts zu virtualisieren. Das Laden von Information Marts, sowohl materialisiert als auch virtualisiert, wird in Kapitel 14, Laden des Dimensionsinformations-Marts, demonstriert.

Trotz der Schlüssel in der Tabelle enthält die Dimensionstabelle die beschreibenden Daten, die den Dimensionseintrag beschreiben. Es kommt sehr häufig vor, dass Dimensionstabellen aus vielen beschreibenden Attributen bestehen. Sie können bis zu 50 oder 100 Spalten umfassen. Andererseits enthält die Tabelle häufig nicht viele Zeilen. Es gibt einige Dimensionen, wie z. B. die in Abbildung 7.3 dargestellte Passagierdimension, die möglicherweise viele Datensätze enthalten. Die meisten Dimensionen sind jedoch eher klein und enthalten möglicherweise höchstens hundert Datensätze.

Nicht alle numerischen Attribute sollten Kennzahlen in der Faktentabelle sein. Beispielsweise wird die Sitzreihenanzahl innerhalb eines Flugzeugs in keiner Berechnung verwendet. Es kann als natürlicher Schlüssel verwendet werden, wird jedoch vom Geschäftsbenutzer nicht aggregiert. Gleiches gilt für das Alter des Passagiers, sofern das Unternehmen nicht das Durchschnittsalter der Passagiere des Flugzeugs berechnen möchte. In der Faktentabelle eines dimensionalen Modells gibt es verschiedene Arten von Kennzahlen:

Volladditive Maßnahmen: sind in dem Sinne vollständig additiv, dass die Werte wie Mengen und Mengen zu einer gültigen Summe addiert werden können.

Semi-additive Maßnahmen: kann entlang einiger der verfügbaren Dimensionen, aber nicht aller, addiert werden.

Nichtadditive Maßnahmen: kann nicht addiert werden.

Daher hängt es auch von den Geschäftsanforderungen ab, ob ein Attribut eine Kennzahl in der Faktentabelle oder ein beschreibendes Attribut in einer seiner Dimensionstabellen wird.

Was sind Dimensionen?

Eine Dimension ist eine Struktur, die Daten kategorisiert, damit Benutzer Geschäftsfragen beantworten können. Häufig verwendete Dimensionen sind Kunden, Produkte und Zeit. Beispielsweise kann jeder Vertriebskanal eines Bekleidungshändlers Daten zu Verkäufen und Reklamationen seines Stoffsortiments erfassen und speichern. Das Management der Einzelhandelskette kann ein Data Warehouse aufbauen, um den Verkauf seiner Produkte über alle Filialen hinweg zu analysieren und Fragen zu beantworten wie:

Wie wirkt sich die Werbung für ein Produkt auf den Verkauf eines verwandten Produkts aus, das nicht beworben wird?

Was sind die Verkäufe eines Produkts vor und nach einer Promotion?

Wie wirkt sich eine Promotion auf die verschiedenen Vertriebskanäle aus?

Die Daten im Data Warehouse-System des Einzelhändlers bestehen aus zwei wichtigen Komponenten: Dimensionen und Fakten. Die Dimensionen sind Produkte, Kunden, Werbeaktionen, Kanäle und Zeit. Ein Ansatz zum Identifizieren Ihrer Dimensionen besteht darin, Ihre Referenztabellen zu überprüfen, z. B. eine Produkttabelle, die alles zu einem Produkt enthält, oder eine Promotion-Tabelle, die alle Informationen zu Promotionen enthält. Die Fakten sind Umsatz (verkaufte Einheiten) und Gewinn. Ein Data Warehouse enthält täglich Fakten über den Verkauf jedes Produkts.

Eine typische relationale Implementierung für ein solches Data Warehouse ist ein Sternschema. Die Fakteninformationen werden in einer sogenannten Faktentabelle gespeichert, während die Dimensionsinformationen in Dimensionstabellen gespeichert werden. In unserem Beispiel ist jeder Verkaufstransaktionsdatensatz für jeden Kunden, für jedes Produkt, für jeden Vertriebskanal, für jede Aktion und für jeden Tag (Uhrzeit) eindeutig definiert.

In Oracle Database werden die Dimensionsinformationen selbst in einer Dimensionstabelle gespeichert. Darüber hinaus hilft die Datenbankobjektdimension beim Organisieren und Gruppieren von Dimensionsinformationen in Hierarchien. Dies stellt natürliche 1: n-Beziehungen zwischen Spalten oder Spaltengruppen (den Ebenen einer Hierarchie) dar, die nicht mit Einschränkungsbedingungen dargestellt werden können. Wenn Sie in der Hierarchie eine Ebene höher gehen, werden die Daten aufgerollt, und wenn Sie in der Hierarchie eine Ebene tiefer gehen, werden die Daten aufgerollt. Im Händlerbeispiel:

Innerhalb der Zeitdimension werden Monate bis zu Quartalen, Viertel bis zu Jahren und Jahre bis zu allen Jahren zusammengefasst.

Innerhalb der Produktdimension werden Produkte zu Unterkategorien, Unterkategorien zu Kategorien und Kategorien zu allen Produkten zusammengefasst.

Innerhalb der Kundendimension rollen Kunden in die Stadt. Dann rollen Städte zum Staat auf. Dann rollen Staaten auf Land. Dann rollen die Länder zur Subregion auf. Schließlich rollen sich die Unterregionen auf die Region auf, wie in Abbildung 9-1 dargestellt.

Abbildung 9-1 Beispiel-Rollup für eine Kundendimension


Beschreibung von "Abbildung 9-1 Beispiel-Rollup für eine Kundendimension"

Die Datenanalyse beginnt normalerweise auf höheren Ebenen in der Dimensionshierarchie und wird schrittweise ausgeführt, wenn die Situation eine solche Analyse rechtfertigt.

Dimensionsschemaobjekte (Dimensionen) müssen nicht definiert werden. Wenn Ihre Anwendung jedoch die dimensionale Modellierung verwendet, lohnt es sich, Zeit mit deren Erstellung zu verbringen, da dies erhebliche Vorteile mit sich bringt, da sie das Umschreiben von Abfragen bei komplexeren Arten von Umschreibungen unterstützen. Dimensionen sind auch für bestimmte Arten von Aktualisierungsvorgängen für materialisierte Ansichten und für SQL Access Advisor von Vorteil. Sie sind nur dann obligatorisch, wenn Sie den SQL Access Advisor (ein GUI-Tool für die Verwaltung materialisierter Ansichten und Indizes) ohne Workload verwenden, um zu empfehlen, welche materialisierten Ansichten und Indizes erstellt, gelöscht oder beibehalten werden sollen.

Trotz der Vorteile von Dimensionen dürfen Sie in keinem Schema Dimensionen erstellen, die die in diesem Kapitel beschriebenen Dimensionsbeziehungen nicht vollständig erfüllen. Andernfalls können falsche Ergebnisse von Abfragen zurückgegeben werden.

Grundlegendes Umschreiben von Abfragen für materialisierte Ansichten für weitere Details zum Umschreiben von Abfragen

Weitere Informationen zum SQL Access Advisor finden Sie im Oracle Database SQL Tuning Guide

Anforderungen an Dimensionen in Data Warehouses

Zwischen Eltern und Kindern muss eine 1: n-Beziehung bestehen. Ein Elternteil kann ein oder mehrere Kinder haben, aber ein Kind kann nur ein Elternteil haben.

Zwischen Hierarchieebenen und ihren abhängigen Dimensionsattributen muss eine 1: 1-Attributbeziehung bestehen. Wenn beispielsweise eine Spalte fiscal_month_desc vorhanden ist, ist eine mögliche Attributbeziehung fiscal_month_desc zu fiscal_month_name. Wenn für Skip-NULL-Ebenen eine Zeile der Beziehung einer Skip-Ebene einen NULL-Wert für die Ebenenspalte hat, muss diese Zeile auch einen NULL-Wert für die Attributbeziehungsspalte haben.

Wenn sich die Spalten einer übergeordneten und einer untergeordneten Ebene in unterschiedlichen Beziehungen befinden, erfordert die Verbindung zwischen ihnen auch eine 1: n-Verknüpfungsbeziehung. Jede Zeile der untergeordneten Tabelle darf nur mit einer Zeile der übergeordneten Tabelle verknüpft werden, es sei denn, Sie verwenden die SKIP WHEN NULL-Klausel. Diese Beziehung ist stärker als nur die referenzielle Integrität, da der untergeordnete Verknüpfungsschlüssel nicht null sein muss, die referenzielle Integrität vom untergeordneten Verknüpfungsschlüssel zum übergeordneten Verknüpfungsschlüssel beibehalten werden muss und der übergeordnete Verknüpfungsschlüssel eindeutig sein muss.

Sie müssen sicherstellen (ggf. mithilfe von Datenbankeinschränkungen), dass die Spalten jeder Hierarchieebene nicht null sind, es sei denn, Sie verwenden die SKIP WHEN NULL-Klausel und die hierarchische Integrität bleibt erhalten.

Ein optionaler Verknüpfungsschlüssel ist ein Verknüpfungsschlüssel, der das unmittelbare untergeordnete Element (sofern eine solche Ebene vorhanden ist) CHILDLEV einer Sprungebene mit dem nächsten übergeordneten Element (sofern eine solche Ebene vorhanden ist) ANCLEV von verbindet die Sprungebene in der Hierarchie. Dieser Joinkey ist auch nur zulässig, wenn CHILDLEV und ANCLEV über verschiedene Beziehungen definiert sind.

Die Hierarchien einer Dimension können sich überlappen oder voneinander getrennt werden. Die Spalten einer Hierarchieebene können jedoch nicht mehr als einer Dimension zugeordnet werden.

Verknüpfungsbeziehungen, die Zyklen im Dimensionsdiagramm bilden, werden nicht unterstützt. Beispielsweise kann eine Hierarchieebene weder direkt noch indirekt mit sich selbst verbunden werden.

Die mit einem Dimensionsobjekt gespeicherten Informationen sind nur deklarativ. Die zuvor diskutierten Beziehungen werden beim Erstellen eines Dimensionsobjekts nicht erzwungen. Sie sollten die Prozedur> DBMS_DIMENSION.VALIDATE_DIMENSION wie in "Überprüfen von Dimensionen" beschrieben ausführen.

Dimensionen erstellen

Bevor Sie ein Dimensionsobjekt erstellen können, müssen die Dimensionstabellen in der Datenbank vorhanden sein, die möglicherweise die Dimensionsdaten enthält. Wenn Sie beispielsweise eine Kundendimension erstellen, müssen eine oder mehrere Tabellen vorhanden sein, die Informationen zu Stadt, Bundesland und Land enthalten. In einem Star-Schema-Data-Warehouse sind diese Dimensionstabellen bereits vorhanden. Es ist daher eine einfache Aufgabe, die zu verwendenden zu identifizieren.

Jetzt können Sie die Hierarchien einer Dimension zeichnen, wie in Abbildung 9-1 dargestellt. Beispielsweise ist city ein untergeordnetes Element von state (da Sie Daten auf Stadtebene bis zu state zusammenfassen können) und country. Diese hierarchischen Informationen werden in der Datenbankobjektdimension gespeichert.

Bei normalisierter oder teilweise normalisierter Dimensionsdarstellung (eine Dimension, die in mehr als einer Tabelle gespeichert ist)> Klauseln NOVALIDATE und RELY, wenn die durch die Einschränkungen dargestellten Beziehungen auf andere Weise garantiert werden.

Möglicherweise möchten Sie die Möglichkeit, NULL-Ebenen in einer Dimension zu überspringen. Ein Beispiel dafür ist mit Puerto Rico. Möglicherweise möchten Sie, dass Puerto Rico in eine Region Nordamerikas aufgenommen wird, aber nicht in die staatliche Kategorie. Wenn Sie diese Funktion wünschen, verwenden Sie die SKIP WHEN NULL-Klausel. Weitere Informationen und Hinweise zu Syntax und Einschränkungen finden Sie in der Beispieldimension weiter unten in diesem Abschnitt.

Sie erstellen eine Dimension entweder mit der Anweisung CREATE DIMENSION oder mit dem Dimensionsassistenten in Oracle Enterprise Manager. Verwenden Sie in der Anweisung CREATE DIMENSION die LEVEL-Klausel, um die Namen der Dimensionsebenen zu identifizieren.

Diese Kundendimension enthält eine einzelne Hierarchie mit einem geografischen Rollup, wobei Pfeile von der untergeordneten zur übergeordneten Ebene gezeichnet werden (siehe Abbildung 9-1).

Jeder Pfeil in diesem Diagramm gibt an, dass für jedes Kind nur ein Elternteil vorhanden ist. Beispielsweise muss jede Stadt in genau einem Bundesstaat enthalten sein und jeder Bundesstaat muss in genau einem Land enthalten sein. Staaten, die zu mehr als einem Land gehören, verletzen die hierarchische Integrität. Außerdem müssen Sie die SKIP WHEN NULL-Klausel verwenden, wenn Sie Städte einschließen möchten, die nicht zu einem Bundesstaat gehören, z. B. Washington D. C. Die hierarchische Integrität ist für den ordnungsgemäßen Betrieb von Verwaltungsfunktionen für materialisierte Ansichten mit Aggregaten erforderlich.

Beispielsweise können Sie eine Dimension products_dim deklarieren, die Ebenen product, subcategory und category enthält:

Jede Ebene in der Dimension muss einer oder mehreren Spalten in einer Tabelle in der Datenbank entsprechen. Daher ist die Produktebene> prod_id in der Produkttabelle und die Unterkategorie der Ebene> prod_subcategory in derselben Tabelle.

In diesem Beispiel werden die Datenbanktabellen denormalisiert und alle Spalten befinden sich in derselben Tabelle. Dies ist jedoch keine Voraussetzung für die Erstellung von Dimensionen. "Verwenden normalisierter Dimensionstabellen zum Erstellen von Dimensionen" zeigt, wie eine Dimension customers_dim mit einem normalisierten Schemaentwurf mithilfe der JOIN KEY-Klausel erstellt wird.

Der nächste Schritt besteht darin, die Beziehung zwischen den Ebenen mit der Anweisung HIERARCHY zu deklarieren und dieser Hierarchie einen Namen zu geben. Eine hierarchische Beziehung ist eine funktionale Abhängigkeit von einer Hierarchieebene zur nächsten Hierarchieebene. Unter Verwendung der zuvor definierten Ebenennamen gibt die Beziehung KIND VON an, dass der Ebenenwert jedes Kindes einem und nur einem Elternebenenwert zugeordnet ist. Die folgende Anweisung deklariert eine Hierarchie prod_rollup und definiert die Beziehung zwischen Produkten, Unterkategorie und Kategorie:

Neben den hierarchischen 1: n-Beziehungen enthalten Dimensionen auch 1: 1-Attributbeziehungen zwischen den Hierarchieebenen und ihren abhängigen, festgelegten Dimensionsattributen. Die in Oracle Database Sample Schemas definierte Dimension times_dim enthält beispielsweise die Spalten fiscal_month_desc, fiscal_month_name und days_in_fiscal_month. Ihre Beziehung ist wie folgt definiert:

Das ATTRIBUT. Die DETERMINES-Klausel bezieht sich auf fis_month_fiscal_month_name und days_in_fiscal_month. Beachten Sie, dass dies ein un> fiscal_month ist, z. B. 1999-11. Sie finden genau einen übereinstimmenden Wert für fiscal_month_name, z. B. November, und days_in_fiscal_month, z. B. 28. Sie können keinen bestimmten fiscal_month_desc basierend auf fiscal_month_name ermitteln, der ist der November für jedes Geschäftsjahr.

Angenommen, in diesem Beispiel wurde eine Abfrage ausgegeben, die von fiscal_month_name anstelle von fiscal_month_desc abgefragt wurde. Da diese 1: 1-Beziehung zwischen dem Attribut und der Ebene besteht, kann eine bereits aggregierte materialisierte Ansicht, die fiscal_month_desc enthält, wieder mit den Dimensionsinformationen verknüpft und zur Identifizierung der Daten verwendet werden.

Es folgt eine Beispieldimensionsdefinition:

Alternativ könnte die extended_attribute_clause anstelle der attribute_clause verwendet werden, wie im folgenden Beispiel gezeigt:

Das Entwerfen, Erstellen und Verwalten von Dimensionen ist Teil des Entwerfens, Erstellens und Verwaltens Ihres Data-Warehouse-Schemas. Stellen Sie nach dem Erstellen der Dimension sicher, dass sie die unter Anforderungen für Dimensionen in Data Warehouses beschriebenen Anforderungen erfüllt.

Grundlegendes Umschreiben von Abfragen für materialisierte Ansichten für weitere Details zur Verwendung von Dimensionsinformationen

Oracle Database SQL-Sprachreferenz für eine vollständige Beschreibung der Anweisung CREATE DIMENSION

Ersatzschlüssel in Maßtabellen

Es ist wichtig, dass der Wert des Primärschlüssels einer Dimensionstabelle unverändert bleibt. Es wird dringend empfohlen, dass alle Dimensionstabellen Ersatzschlüssel als Primärschlüssel verwenden.

Ersatzschlüssel werden nicht aus Datenquellensystemen extrahiert, sondern im Data Warehouse generiert und verwaltet.

Die Verwendung von Ersatzschlüsseln in Dimensionstabellen bietet mehrere Vorteile:

  • Leistung - Die Verarbeitung von Verknüpfungen zwischen Dimensionstabellen und Faktentabelle ist durch die Verwendung eines einzelnen Feld-Ersatzschlüssels wesentlich effizienter.
  • Integration - In Bezug auf die Datenerfassung ermöglicht der Ersatzschlüssel die Integration von Daten aus mehreren Datenquellen, auch wenn ihnen konsistente Quellschlüssel fehlen.
  • Datenversion verwalten - Verfolgen Sie Änderungen an Dimensionsfeldwerten in der Dimensionstabelle.

Es ist so wichtig, dass die Dimensionstabellen so gestaltet sind, dass sie von mehreren Data Marts und Cubes in einem Data Warehouse gemeinsam genutzt werden können. Dies stellt sicher, dass das Data Warehouse konsistente Informationen für ähnliche Abfragen bereitstellt. Außerdem muss ein Ersatzschlüssel als Primärschlüssel für Dimensionstabellen verwendet werden, damit die Dimensionstabellen einfacher gemeinsam genutzt werden können.

Langsam wechselnde Dimension

Die Attribute eines gegebenen Datensatzes in der Dimensionstabelle könnten z.B. Produktbeschreibung, Lieferadresse. Dieses Phänomen ist als sich langsam ändernde Dimension bekannt, und es gibt entsprechende Techniken, um mit jeder Art von sich langsam ändernder Dimension effektiv umzugehen:

  • Typ 1 wird verwendet, wenn der Verlauf der Daten nicht wichtig ist. Wenn sich Daten in der Datenquelle ändern, wird das entsprechende Dimensionsattribut überschrieben.
  • Typ 2 wird verwendet, wenn die Änderung von Daten in der Datenquelle wichtig ist und Sie den historischen Kontext von Fakten mit den sich ändernden Daten beibehalten möchten. Wenn sich Daten in der Datenquelle ändern, wird eine neue Zeile in die Dimensionstabelle eingefügt. Die vorherige Zeile bleibt unverändert.
  • Type 3 – this happens when you want to learn about every fact before and after the attribute changes. To deal with this, you can introduce a new attribute to the existing row and update value to both fields.

We have examined how the dimension tables fit into star schema and their relationships with the fact table. We also discussed surrogate keys and slowly changing dimension concepts applied to the dimension table.

Two Types of Tables

In a reporting data model, there are two types of tables. Before I go further on this, I have to point out that there is a big difference between a data model build for a transactional or operational system, compared to the data model build for a reporting system. In this article, we are focusing on a data model for reporting systems, If you want to understand why it is different from transactional data models, read this article. In a reporting data model, we have two types of tables, Fact table, and Dimension table,

A Fact table is a table that keeps numeric data that might be aggregated in the reporting visualizations.

A Dimension table is a table that keeps descriptive information that can slice and dice the data of the fact table.

The definition above, although correct, can lead to creating heaps of different type of tables and calling those a Dimension or Fact table. You do need to understand where and how a Dimension table can be created, what are rules of thumb for creating such a table, and what is a good dimension, and what is bad. and that is what I’m focusing on this article.

A Type of Field: Descriptive

A Dimension table is a table that has descriptive information, which is or can be used for slicing and dicing. A Dimension table has fields that are descriptive. Descriptive fields can be of datatype text, date and time, or even a number. Let’s have a look at some examples,

The table below is a table full of information about customers, and they are all text data type information,

This is a Dimension table because you use the data of this table mainly in visualizations like this:

Most of the times, you use values from this table in an axis or legend of a chart of visualization, but not as values. (You might use these as values in the table visual, but that is an exception, table visual, will show you everything). In the screenshot above, the value is SalesAmount (coming from a different table), and it always sliced and diced by a field from the Customer table, Gender, EnglishEducation, Lastname, etc. That brings us to the first part of the definition of the dimension table,

Fields from a Dimension table are always used for slicing and dicing data of other tables (either through filters or slicers, or through axis or legend of the same visual), We call these fields, Descriptive fields.

You also found that fields of the Customer table above were all text. That can be different, let’s check it out here, we have two new fields in the Customer table now,

The date field (BirthDate), and the numeric field (YearlyIncome) will be also used for slicing and dicing as the below screenshot shows it,

No matter you have date and time fields or even numeric fields in the customer table, they are used in the same way as text fields, they are used for slicing and dicing.

The data type of the descriptive fields can be text, date and time, number or anything else. The data type is not the important property of these fields, the nature of use case for them is important, which is slicing and dicing.

Another Type of Field: Values

Descriptive fields are not the only type of field that we work with it in a data model. There is also another type of field, which is called as Fact. These fields are not used for slicing and dicing. These fields are used as VALUEs in the visualization. In all visualizations above, there was a field that was the Value part of the visual: SalesAmount.

SalesAmount is not used for slicing and dicing. It is used as a value. In fact, SalesAmount is sliced and diced by the descriptive fields of Gender, Education, and Lastname. SalesAmount is not a descriptive field, it is a field that used as a value, and can be aggregated sometimes (like what you see in SalesAmount by Gender or SalesAmount by EnglishEducation). SalesAmount is a FACT field.

Fields that are the VALUE part of a visualization (not for table, and a few other visuals), and sliced and diced by descriptive fields, often aggregated are FACT fields.

Golden Rule: Fact and Descriptive Fields Not in the Same Table!

Now that you know what is a Fact field, and what is a Descriptive field, it is time to explain the first golden rule: Keep these two types of fields away from each other, in separate tables. Fact fields should be in a table which does not have Descriptive fields in it and vice versa. Your first question I believe then is Why?! Well, let’s see.

Let’s assume that we have a table with both types of fields, descriptive fields and also fact fields, like below,

All the seven first fields are descriptive fields, and the last two (SalesAmount and Order Quantity), are fact fields. Using it in a model like above works fine, and you can slice and dice the data of fact fields, by descriptive fields. However, what if you bring another set of descriptive fields, which are not part of this table? for example, what if you want to slice and dice the data of the fact fields by some fields from the Product table, such as ProductName, Color, etc? Then you end up bringing all those into this table too, and end up with a super large table, which has customers, products, and sales values! What if later on, you want to bring dates of the transactions, sales promotion, store details? each of these brings a whole lot of fields with themselves.

Say No to a Single Table Including Everything!

One of the other golden rules of data modeling is to say no to a scenario like above to happen. Do not bring everything into one large table with hundreds of columns. There are several reasons for that, I just point a few,

  • Maintenance of such a big table would be always a challenge. Every time you bring a new set of fields, you have to combine them into this table.
  • The level of details stored in this table is dependent on the fields in it. If you bring new fields, you need to store more details! This is also a maintenance problem.
  • Combining is not always possible! What if you also want to bring a budget into the same table? most of the time is not possible, because you may not have the budget data in the level of customer, you may have it only at the level of the month, and product. then you end up with multiple very large tables.

Maintenance Challenge

Every time, you add new fields, your table needs to be combined with the new table to have everything in one place!

The level of Details is dependent on the fields in the table! If you add more fields, you need to store more details.

Combining is Not Always Possible

If the level of details in one or two fact fields is different, then you cannot store them in one table easily. You have to split into two,

This can become another big table, adding dates, and more details about the product, etc. and then you need to create a “many-to-many” relationships between the two tables, which cause heaps of other issues! If you like to learn more about many-to-many relationships, read this article.

So it is not possible to have one table with everything in it, and as you realized it is better to decouple the fact fields from the dimension fields. because then expanding the model is much easier, and it won’t need a really high maintenance practice.

When the Primary Key is Not a Primary Key!

The Primary Key is a column (let’s assume it is only one column for this example), that is row identifier. However, what if it isn’t!? Do you recall in your use cases a scenario that something has to be a primary key, but it can’t be? Let me tell you an example, In a reporting model for bank information, we have a table of credit cards. Each credit card has a unique number, so can be used as the primary key,

However, if you look more in details, a credit card will be renewed every few years, with a new expiry date, but the same number!

This is an example of a field that should be somehow primary key (or maybe it is already a primary key in the source operational system), but not in our model. we call these fields, Alternate Key, Business Key, or the Primary Key in the source system. And then we need to create a new field in the Dimension table which can be a real primary key. A primary key of the dimension table, because of this reason is called Surrogate Key, and most of the times can be generated as an auto-number index value,

There are other scenarios that you might end up creating an auto-number surrogate key for your dimension as well. This was just an example to clarify things for you. If scenarios like this happen, most of the times, you do need to also keep the Alternate Key beside the Surrogate Key in the dimension table for slicing and dicing.

Dimension Tables are Wide

Another golden rule in designing dimension tables is to make them wide. Add fields that are related to that, more fields in the dimension table means more power for slicing and dicing the data. If you have just three fields of Customer first name, last name, and gender, then it means you can only slice and dice data by these three. However, if you have a customer table with all columns below, then you will have much more power in slicing and dicing,

Dimension tables have many fields, and that is why they are Wide. And wider means more slicing and dicing power.

Dimension Tables are Shallow

Dimension tables, also wide, but often, they are shallow. They do not have many rows. They are often less than a million row. Jedoch, there are always exceptions. For examples, if FaceBook wants to create a customer dimension, it would be hundreds of millions of rows for sure. A dimension table is not storing transactional data, it is storing descriptive information. Transactional data is what it makes the number of rows to grow.

Examples of Dimension Tables

Based on what you learned so far, you can now name some dimension tables in your scenario. It is not a generic dimension table, a table might be a dimension in one model, and with some difference in the set of the fields, might be a fact table in another model. Here are some samples of dimensions, and their fields,

Customer: CustomerKey, First name, Last name, Full name, Age, Gender, Job title, etc.

Product: ProductKey, Product Number (Alternate key), Product Name, Color, Size, etc.

Store: StoreKey, Name, Address, etc.

Zusammenfassung

I can write about the Dimension table even much more, as there are lots of details to talk about. However, let’s leave the rest of that for the other parts of this series of Modeling Basics. In this article, you learned that there are two main types of fields, Descriptive and Fact fields. These two fields should not be at the same table. So that is why we have tables with Descriptive fields and call them Dimension tables. Dimension tables also have key fields called surrogate key as a row identifier. The relationship between a dimension table and fact tables are one-to-many. In the next article, I will explain what is the fact table, and how it connects to a dimension table.

Do you have a table with both fact and descriptive fields in it? it is time to split it, if you have any questions in doing it, let me know in the comments below.


Folge uns

Event Details

Register Here RADACAD Bootcamp is

Event Details

Register Here

RADACAD Bootcamp is a 2-days course, run through our premier Power BI and AI content by Reza and Leila in-person. This event would be full of hands-on labs and designed in a way that gives you most of the training value in a short timeframe. If you haven’t used Power BI or AI technologies at all, and are a complete beginner, or on the other hand, if you are an advanced and experienced user, you will get a lot of learnings and takeaways from this course. The course is in two days modules:

This course is delivered to thousands of people all around the world, check out only a few of the recommendations at the bottom of this page, and check some of our clients.

Length: 1 or 2 days.

Delivery method: In-Person

Dates: 14th and 15th November 2019

Location: Auckland, New Zealand

Type of training: Public

Early Bird Pricing: $280 USD ($440NZD)

Standard Pricing: $317 USD ($499 NZD)

Please note all pricing in cart is in USD

14 (Thursday) 9:00 am - 15 (Fr >GMT

Lage

Auckland, Auckland, New Zealand

Organizer

Lern mehr

Event Details

Register Here This course is

Event Details

This course is a 1-day course module 4 of Power BI from Rookie to Rock Star Training.

This training is designed for data architect or administrator, who is designing the architecture of leveraging Power BI in a solution. Someone who wants to understand how all components of Power BI are sitting beside each other to build the whole solution. This training is designed for understanding the strategy of using Power BI rather than the development of it.

In this training, you will learn about architecting the strategy of a Power BI solution from end to end. This is not training about development (Modules 1 to 3 already covered that). You do not need to attend previous modules to attend this course. This course is designed separately from those. However, knowing some of the basics of Power BI is helpful.

You will learn about Power BI Service, and different types of connections in Power BI and choose the right type of connection for your solution. You will also learn all different ways of sharing a Power BI Solution and the pros and cons of each. The course continues with a detailed discussion about row-level security. You will learn how gateway configuration and set up will be in the whole package. You will also learn about integrating Power BI with other tools, and some architecture blueprints to follow when you are designing a Power BI solution.

At the end of this training, you will be able to design the architecture of Power BI for your requirement, you can choose the right way of sharing and design the gateway configuration as well as the communication of Power BI with other tools and services. You will be able to answer any questions that come to your mind about a solution architecture in Power BI world and make the right decision to choose the right strategy of Power BI usage in your organization.

Instructor: Reza Rad

Our trainer is the world well-known name in the Microsoft BI field. Reza Rad is Microsoft Regional Director, a speaker in world’s best and biggest Microsoft Data Platform, BI and Power BI conferences such as Microsoft Ignite, Microsoft Business Applications Summit, Microsoft Data Insight Summit, PASS Summits, PASS Rallys, SQLBits, TechEds, and so on. He is the author of books on this topic, and he has more than 15 years’ experience in the Microsoft BI technologies. Reza is the founder of RADACAD and a consultant for more than decades. He is also a Microsoft Certified Trainer for years. He is Microsoft Data Platform MVP (Most Valuable Professional) focused on BI and Data Analysis, Microsoft has awarded him MVP because of his dedication and expertise in Microsoft BI technologies from 2011 till now (more than eight years). He is the author of Power BI book from Rookie to Rock Star.

Myth 1: Power BI is a self-service Excel tool, and isn’t suitable for Enterprise Solutions.

There are many scenarios that Power BI has been used in enterprise solutions. Power BI features for data mash up (with the very powerful data transformation component: Power Query), and data modelling based on xVelocity in-memory engine (Power Pivot), and great data visualization components such as Power View and Power Map, along with mobility support of this product, are rarely available in other products. We have designed, implemented and have seemed many BI enterprise solutions based on Power BI within very large organizations.

Myth 2: Power BI is easy to use, and doesn’t require a training course.

Power BI is an easy to use tool, but for basic functions. Every BI application requires calculated measure, which needs to be written in DAX. Every BI application requires advanced data transformations which need to be handled with Power Query M scripting language. Designing and implementing solutions with Best Practices is always a requirement for reliable BI applications. We designed our Power BI training in a way that delivers advanced content for all components of Power BI, and fortify your team’s knowledge on the product, so they can solve any complex challenge with this tool.

Myth 3: Power BI is only for Microsoft based environments and platforms.

Power Query is the core of data extraction in Power BI. Power Query supports a wide range of data sources. Not only SQL Server, but also Oracle, MySQL, web service result set, DB2 and many other data source are supported. There is also the possibility to connect to many systems such as Salesforce. The Visualization component of Power BI is also HTML5 supported and is available for all mobile devices. Power BI app in AppStore, and Google PlayStore, as well as Microsoft AppStore, enables dashboards and data visualizations to be available in all environments.

Myth 4: Power BI is not a powerful and fully functional BI tool, and cannot be compared with other tools in the market.

In fact, the reverse is true. Power BI is such powerful that can be the replacement of many other expensive BI tools in the market. We’ve been through scenarios of successful Power BI solutions that have been a replacement of Cognos, IBM products, Oracle WB, SAP BO, and so on. Power BI has 5 powerful components that cover main aspects of BI and data analysis system.

In addition, there is always the possibility to use this as a hybrid approach and save lots of time and money along with great features that are only available in this product.