Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Heute möchte ich über ein Datenmodellierungskonzept namens Junk-Dimension sprechen . Der Name lässt vermuten, dass es sich um eine abwertende Technik handelt, die man vermeiden sollte, aber in Wirklichkeit handelt es sich um einen nützlichen Ansatz.

Tatsächlich habe ich an einer Frage aus dem gearbeitet und eine Junk-Dimension war die perfekte Lösung dafür. Sobald Sie es sehen und verstehen, werden Sie es in Ihrer eigenen Arbeit häufig anwenden können. Das vollständige Video dieses Tutorials können Sie unten in diesem Blog ansehen.

Inhaltsverzeichnis

Was sind Junk-Dimensionen?

Das Data Warehouse Toolkit von Kimball und Ross , eine der Bibeln der dimensionalen Modellierung, definiert sie als die Gruppierung von Flags und Indikatoren mit typischerweise niedriger Kardinalität . Niedrige Kardinalität bedeutet eine kleine Anzahl einzigartiger Beobachtungen innerhalb eines bestimmten Feldes.

In unserem Beispiel haben wir ein Datenmodell für unser Geschäft, kundenspezifische PCs zu bauen. Das Datenmodell bezieht sich auf Bestellungen und Rechnungen. Wir haben auch eine Reihe von Flags, mit denen wir den Prozessortyp , die Art der Tower- Konfiguration (Kompakt oder Vollständig) und den Zweck (Gaming oder Workstation) erfassen können .

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Definieren von Junk-Abmessungen mithilfe der Küchen-Müllschubladen-Analogie

Wenn Sie sich jedes dieser Felder ansehen, gibt es in jedem Feld nur zwei eindeutige Beobachtungen. Dies ist es, was Kimball als Flagge mit niedriger Kardinalität bezeichnen würde . Er sagt, dass wir durch die Schaffung einer abstrakten Dimension Flags aus der Faktentabelle entfernen und sie gleichzeitig in ein nützliches Dimensionsgerüst einordnen.

Die Analogie der Küchenschublade für eine Mülldimension ist gut. Jeder hat eine Schublade voller Gummibänder, Heftklammern, Batterien, Geburtstagskerzen usw. Es ist nicht wichtig, dass all diese Dinge eine eigene Schublade haben, aber Sie müssen einen Platz haben, an dem Sie sie unterbringen können.

Wenn Sie sie beibehalten, kann dies dazu führen, dass die Faktentabelle immer größer wird. Nehmen wir an, wir haben eine Faktentabelle mit einer Million Datensätzen. Wir haben viele Computer gebaut und für jeden Computer, den wir bauen, müssen wir den Prozessor, den Tower und den Zweck angeben. Das bedeutet, dass wir für eine Million bestellter PC-Zeilen auch 3 Millionen Flags in der Faktentabelle haben.

Reduzieren der Größe der Faktentabelle

Wir könnten diese in eine Dimensionstabelle verschieben und nur mit der Modell-ID verknüpfen, um die 3 Millionen Flags aus der Faktentabelle zu entfernen. Dazu können wir für jedes dieser Flags eine separate Tabelle erstellen und es wird funktionieren. Dieser Vorgang verkompliziert jedoch das Datenmodell, in dem Sie normalerweise einspaltige Tabellen vermeiden möchten.

Die ideale Lösung besteht darin, eine Junk-Dimension zu verwenden , in der Sie über eine Reihe von Flags mit niedriger Kardinalität verfügen, die auf allgemeine Weise miteinander verbunden sind. Diese beziehen sich alle auf Attribute der Computer, die wir bauen, jedoch nicht auf eine wirklich direkte Weise, wie Sie es normalerweise für eine bestimmte Dimensionstabelle tun würden.

Überprüfung des Problems des Forummitglieds

Werfen wir einen Blick auf die konkrete Anwendung, die im Forum veröffentlicht wurde. Das Mitglied wollte zwei verschiedene Felder erstellen, eines für Stalled und eines für Active . Wenn der Kunde in den letzten 45 Tagen eine Transaktion durchgeführt hat, wird diese als aktiv gekennzeichnet; andernfalls wird es als blockiert gekennzeichnet.

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Das Mitglied wollte außerdem eine andere Dimensionstabelle für den Kundentyp, der entweder Mehrfachbestellung oder Einzelbestellung ist. Wenn das Konto zu irgendeinem Zeitpunkt in der Historie zwei oder mehr Transaktionen unter Verwendung einer einzigen Kontonummer hätte, würde dies als Multi-Order-Kunde betrachtet. Und wenn sie nur eine Bestellung für eine bestimmte Kontonummer hätten, wäre das ein Einzelauftragskunde.

Das sind also die beiden Flaggen, die wir entwickeln wollen. Lassen Sie uns in LuckyTemplates eintauchen und herausfinden, wie das geht.

Datenmodellierung für die Junk-Dimension

Werfen wir einen Blick auf das Datenmodell. Es ist ein wirklich einfaches Datenmodell. Wir haben unsere erweiterte Datumstabelle und Transaktionstabelle .

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Unsere Transaktionstabelle enthält nur drei Felder: eine Kontonummer , ein Rechnungsdatum und eine Verkaufsmenge .

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Im Allgemeinen gilt: Wenn wir die Transformation näher an die Quelle bringen können, werden wir das tun. Dies ist im Verlauf einer Berichtssitzung nicht dynamisch, sodass wir es in DAX nicht tun müssen .

Wir sollten dies entweder in Power Query oder Data Warehouse/SQL tun, wenn wir diese Option haben. Gehen wir aber vorerst davon aus, dass wir das nicht tun und es nur in der Leistungsabfrage tun .

Identifizieren des Clienttyps für die Junk-Dimension

Als Erstes ermitteln wir den Kundentyp, ob es sich um eine Einzelbestellung oder eine Transaktion mit mehreren Bestellungen handelt. Wir verwenden Group By , Count und Count Rows .

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Fügen Sie dann alle Daten hinzu und machen Sie daraus einen Vorgang „Alle Zeilen“, sodass wir nicht die aggregierte Tabelle, sondern die Anfangstabelle mit dieser Zeilenanzahl in jeder Zeile zurückgeben.

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Schauen wir uns das Ergebnis an und erweitern es.

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Wir können eine benutzerdefinierte Spalte hinzufügen, sie „Client Type“ nennen und dann eine IF-Anweisung erstellen. Die Aussage lautet: Wenn Count gleich 1 ist, handelt es sich um eine einzelne Bestellung. andernfalls handelt es sich um eine Mehrfachbestellung.

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Wir ändern einfach die Spalte in einen Texttyp. Jetzt haben wir eine unserer beiden Dimensionen in der Faktentabelle festgelegt.

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Lassen Sie uns die zweite Dimensionstabelle fertigstellen. Wenn in diesem Fall die letzte Bestellung 45 Tage oder weniger vom heutigen Datum entfernt ist, gilt der Kunde als aktiv. Wenn innerhalb von 45 Tagen ab heute keine Bestellung eingeht, ist der Kunde inaktiv.

Wir fügen eine benutzerdefinierte Spalte hinzu und benennen die Spalte Today . Fügen Sie dann DateTime.LocalNow hinzu , um uns das aktuelle Datum und die aktuelle Uhrzeit zu geben, und dann Date.From , um uns nur den Datumsteil zu geben.

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Ändern wir dies einfach in einen Datumsdatentyp und verschieben wir dann die Spalte nach vorne.

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Es gibt eine einfache Möglichkeit, eine Subtraktion zwischen den beiden Datumsspalten zu erstellen. Markieren Sie einfach diese beiden Daten, klicken Sie im Menüband auf „Daten“ und dann auf „Tage subtrahieren“ .

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Dadurch erhalten Sie den Unterschied zwischen diesen beiden Daten in Bezug auf die Anzahl der Tage. Benennen wir diese neue Spalte „Tage vor heute“.

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Der nächste Schritt besteht darin, die Mindesttage vor dem heutigen Tag zu ermitteln, d. h. die letzte Bestellung für jede Kontonummer. Wenn diese Zahl kleiner oder gleich 45 ist, ist sie aktiv.

Lassen Sie uns noch einmal „Gruppieren nach“ , dann „Erweitert“ und dann „Kontonummer“ ausführen .

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Auch hier verwenden wir „Alle Daten“ für den neuen Spaltennamen und „Alle Zeilen“ für den Vorgang.

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Dieses Mal fügen wir „ Mindesttage dazwischen“ mit „Minimum“ als Operation und „ Tage vor heute“ als Spalte hinzu. Dadurch erhalten wir die aktuellste Bestellung.

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Dann erweitern wir „Alle Daten“ und entfernen „Kontonummer“ .

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Sobald wir dies erweitert haben, haben wir die Mindesttage zwischen den Kontonummern.

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Zuletzt fügen wir eine weitere benutzerdefinierte Spalte hinzu und nennen sie Client Timing . Wir werden einen Was-wäre-wenn-Parameter eingeben, bei dem es sich um „ Aktiv “ oder „ Stalled “ handelt, wenn unser Wert „Min. Tage dazwischen“ kleiner oder gleich 45 ist .

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Entfernen der unnötigen Spalten

Da wir jetzt viele unterstützende Spalten haben, klicken wir auf „Spalten auswählen“ und entfernen diejenigen, die wir nicht benötigen.

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Wir werden die Spalten Count , Today , Days Before to Today und Min Days Between entfernen . Wir haben jetzt nur noch die ursprüngliche Faktentabelle sowie die Spalten „Client-Typ“ und „Client-Timing“ .

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Anstatt diese in der Faktentabelle zu belassen, duplizieren wir diese Tabelle.

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Wir nennen die Duplikattabelle Account Flags .

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Gehen wir zurück zur Tabelle „Transaktionen“ und entfernen Sie die Felder „Client-Typ“ und „Client-Timing“ .

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Wir haben jetzt die ursprüngliche Faktentabelle und die Konto-Flags-Tabelle.

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Für die Tabelle „Konto-Flags“ benötigen wir die Felder „Client-Typ“ und „Client-Timing“ nicht, daher entfernen wir diese. Wir markieren einfach alle diese Felder, entfernen Zeilen und entfernen Duplikate.

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Wir haben jetzt unsere Junk-Dimensionstabelle. Jetzt müssen Sie nur noch auf „Schließen & Übernehmen“ klicken . Der nächste Schritt besteht darin, die Kontonummer aus unserer Tabelle „Kontomarkierungen“ mit der Kontonummer in unserer Transaktionstabelle zu verbinden .

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Wir haben eine Eins-zu-viele-Beziehung zwischen der Tabelle „Transaktionen“ (die unsere Faktentabelle ist) und der Tabelle „Konto-Flags“ (die unsere Junk-Dimensionstabelle ist).


Aufbau Ihrer Datenmodellbeziehungen in LuckyTemplates
Datenmodellierung in LuckyTemplates: Tipps und Best Practices

Abschluss

Lassen Sie uns die Dimensionen „Client-Timing“ und „Client-Typ“ in unsere Leinwand einfügen und sie in Slicer umwandeln. Wir können jetzt genau das tun, was das Mitglied ursprünglich tun wollte, nämlich basierend auf diesen Attributen einen Slice erstellen.

Wenn wir auf „Mehrfachbestellung“ klicken, bleiben uns nur diejenigen übrig, die mehrere Bestellungen haben, und wenn wir auf „Einzelbestellung“ gehen, bleiben uns nur diejenigen übrig, die einen Kauf getätigt haben.

Junk-Dimension: Was ist das und warum ist es alles andere als Junk?

Zusammenfassend lässt sich sagen, dass dies im Grunde eine Junk-Dimension ist und wie man sie erstellen kann. Dies ist eine sehr nützliche Technik, wenn Sie über eine Reihe verschiedener Flags mit geringer Kardinalität verfügen, die Sie auf effiziente Weise in Ihr Datenmodell integrieren möchten.

Die Technik der Gruppierung nach allen Zeilen ist äußerst nützlich, um diese Junk-Dimensionen zu erstellen. Ich hoffe, Sie fanden das wie immer hilfreich.


So speichern und laden Sie eine RDS-Datei in R

So speichern und laden Sie eine RDS-Datei in R

Sie erfahren, wie Sie Objekte aus einer .rds-Datei in R speichern und laden. In diesem Blog wird auch behandelt, wie Sie Objekte aus R in LuckyTemplates importieren.

Was ist Self in Python: Beispiele aus der Praxis

Was ist Self in Python: Beispiele aus der Praxis

Was ist Self in Python: Beispiele aus der Praxis

First N Business Days Revisited – Eine DAX-Codierungssprachenlösung

First N Business Days Revisited – Eine DAX-Codierungssprachenlösung

In diesem Tutorial zur DAX-Codierungssprache erfahren Sie, wie Sie die GENERATE-Funktion verwenden und einen Kennzahltitel dynamisch ändern.

Präsentieren Sie Einblicke mithilfe der Multi-Threaded-Dynamic-Visuals-Technik in LuckyTemplates

Präsentieren Sie Einblicke mithilfe der Multi-Threaded-Dynamic-Visuals-Technik in LuckyTemplates

In diesem Tutorial erfahren Sie, wie Sie mithilfe der Multi-Threaded-Dynamic-Visuals-Technik Erkenntnisse aus dynamischen Datenvisualisierungen in Ihren Berichten gewinnen.

Einführung in den Filterkontext in LuckyTemplates

Einführung in den Filterkontext in LuckyTemplates

In diesem Artikel werde ich den Filterkontext durchgehen. Der Filterkontext ist eines der Hauptthemen, über die sich jeder LuckyTemplates-Benutzer zunächst informieren sollte.

Beste Tipps zur Verwendung der Apps im LuckyTemplates-Onlinedienst

Beste Tipps zur Verwendung der Apps im LuckyTemplates-Onlinedienst

Ich möchte zeigen, wie der LuckyTemplates Apps-Onlinedienst bei der Verwaltung verschiedener Berichte und Erkenntnisse aus verschiedenen Quellen helfen kann.

Analysieren Sie Gewinnmargenänderungen im Laufe der Zeit – Analysen mit LuckyTemplates und DAX

Analysieren Sie Gewinnmargenänderungen im Laufe der Zeit – Analysen mit LuckyTemplates und DAX

Erfahren Sie, wie Sie Ihre Gewinnmargenänderungen mithilfe von Techniken wie Kennzahlenverzweigung und der Kombination von DAX-Formeln in LuckyTemplates ermitteln.

Materialisierungsideen für Datencaches in DAX Studio

Materialisierungsideen für Datencaches in DAX Studio

In diesem Tutorial werden die Ideen der Materialisierung von Datencaches und deren Auswirkungen auf die Leistung von DAXs bei der Bereitstellung von Ergebnissen erläutert.

Geschäftsberichte mit LuckyTemplates

Geschäftsberichte mit LuckyTemplates

Wenn Sie bisher noch Excel verwenden, ist dies der beste Zeitpunkt, LuckyTemplates für Ihre Geschäftsberichtsanforderungen zu verwenden.

Was ist LuckyTemplates Gateway? Alles was du wissen musst

Was ist LuckyTemplates Gateway? Alles was du wissen musst

Was ist LuckyTemplates Gateway? Alles was du wissen musst