Ich habe eine akkumulierte Snapshot- Faktentabelle, die den Ein- und Ausgang von Containern in einem Terminal verfolgt .
Die Container können auf drei verschiedene Arten ein- und aussteigen. Daher habe ich mir überlegt, eine spezifische Dimensionstabelle zu erstellen, in der diese drei möglichen Wege ( Zug, Schiff oder LKW ) aufgeführt sind.
Dann habe ich diesen Artikel gelesen, der im Grunde sagt, dass diese Technik falsch ist, aber ich kann nicht verstehen, warum.
Erster Artikel:
Manchmal, wenn eine Faktentabelle eine lange Liste von Fakten enthält, die in einer einzelnen Zeile nur spärlich ausgefüllt sind, ist es verlockend, eine Kennzahlentypdimension zu erstellen, die die Faktentabellenzeile auf einen einzelnen generischen Fakt reduziert, der durch die Kennzahlentypdimension identifiziert wird. Wir empfehlen diesen Ansatz im Allgemeinen nicht. Obwohl alle leeren Faktenspalten entfernt werden, multipliziert es die Größe der Faktentabelle mit der durchschnittlichen Anzahl belegter Spalten in jeder Zeile und erschwert die Berechnung innerhalb der Spalte erheblich. Diese Technik ist akzeptabel, wenn die Anzahl potenzieller Fakten extrem ist (in Hunderten), aber weniger als eine Handvoll auf eine bestimmte Faktentabellenzeile anwendbar wäre.
Ich verstehe, dass eine " Measure Type Dimension ", die für eine Transaktionsfaktentabelle implementiert ist, Probleme verursachen kann, wie in diesem anderen Artikel angegeben , aber ich kann keinen Nachteil erkennen, wenn sie für eine akkumulierte Snapshot-Tatsache verwendet wird .
Zweiter Artikel: (einige Nachteile der Implementierung einer "Maßtypdimension")
- [...] Wenn wir uns für eine "Maßtypdimension" entscheiden, verlieren wir diese Analysefähigkeit. Wenn eine Kennzahl nicht mit den anderen Kennzahlen kompatibel ist, können wir sie nicht addieren.
- [...] Je mehr Durchgänge unser SQL ausführen muss, um einen Bericht zu erstellen, desto langsamer ist der Bericht.
- [...] Wenn Sie im BI-Tool den Kennzahlfilter nicht einfügen, riskieren Sie, dass der Benutzer "Müllinformationen" erhält. Aus Sicht der Benutzerfreundlichkeit ist dieses Design ein Müll.
Antwort auf die Antwort von Mark Storey-Smith
Sehr nette Herangehensweise, daran hätte ich nie gedacht.
Eine andere Sache: Jeder Ein- und Ausstieg eines Fahrzeugs, das Container in das Terminal bringt, hat eine eindeutige ID, die mir andere Informationen gibt, wie: erwartete Ankunft des Fahrzeugs, tatsächliche Ankunft, wenn es sich um ein Schiff handelt, das Dock, wenn es sich um einen LKW handelt, die Mautstelle und viele andere Informationen ...
Dies sind 3 verschiedene Faktentabellen, die irgendwie mit der Container-Faktentabelle verknüpft sein müssen.
Ich dachte, dass die ID der Reise a ist degenerate dimension
, also würde sie direkt in die Container-Faktentabelle gelangen. Mein Zweifel ist also: Soll ich 6 verschiedene Felder in die Container-Faktentabelle einfügen (Schiffsreise_in_ Schlüssel, Schiff_reise_aus_ Schlüssel, Zug_ Reise_in_ Schlüssel, Zug_ Reise_aus_ Schlüssel, LKW_ Reise_in_ Schlüssel, LKW_ Reise_aus_ Schlüssel) oder nur 2 andere Felder (Reise_in, Reise) zu diesen?
Ich hoffe mein Zweifel ist klar, danke.