In Zeiten stetig fallender Memory-Preise scheint es im ersten Moment überflüssig zu sein, die Grösse eines Datenmodells zu optimieren. Doch geht es nicht nur um die Grösse in Megabyte, sondern auch darum, wie schnell dass das Dashboard oder der Bericht auf einen Klick des Users reagiert. Mit den folgenden Best Practices und Tools gelingt auch dir ein Datenmodell, welches deine User aufgrund seiner fixen Reaktionszeit schätzen werden.
VertiPaq
Power-BI verfügt mit VertiPaq über eine leistungsstarke Engine, welche Berechnungen über Millionen von Datensätzen innert kürzester Zeit durchführen kann. Vorausgesetzt, man befolgt bei dem Bau des Datenmodels einige Grundsätze und bewährte Praktiken.
VertiPaq ist eine spaltenförmige Datenbank, welche speziell auf die schnelle Datenauswertung ausgelegt ist. Die Daten werden nicht Zeile um Zeile, sondern Spalte um Spalte gespeichert. Dies erlaubt einen höheren Komprimierungsgrad, da sich die Werte in einer Spalte eher wiederholen. VertiPaq evaluiert dazu erst die optimale Sortierung über alle zusammenhängenden Spalten und wendet anschliessend verschiedene Komprimierungstechniken an. Die Grösse eines Datenmodells in Power BI ist wichtig, da es sich bei VertiPaq um eine in-Memory-Datenbank handelt. Ein kleineres Modell benötigt nicht nur weniger Arbeitsspeicher, sondern kann Anfragen des Anwenders auch schneller beantworten.
Bewährte Praktiken
Nun gilt es Voraussetzungen zu schaffen, unter denen die Kompressionstechniken optimal arbeiten können. Was sind also die Hebel, mit denen Du ansetzen kannst?
- Kardinalität
- Anzahl Spalten
- Datentypen
- Berechnete Spalten & Tabellen
Die Kardinalität drückt aus, wie oft sich Einträge in einer Spalte wiederholen. Eine hohe Kardinalität liegt vor, wenn viele einzigartige Daten vorkommen und sich somit selten wiederholen. Umgekehrt liegt eine niedrige Kardinalität vor, wenn eine Spalte vergleichsweise wenige einzigartige Werte enthält, sich diese also häufig wiederholen. Für die Komprimierung ist eine niedrige Kardinalität von Vorteil, da dann die grössten Einsparungen erzielt werden können. Die Kardinalität hat den stärksten Einfluss auf die Grösse und Leistungsfähigkeit eines Datenmodells.
Beispiele:
Daten mit Uhrzeit: Spalten, welche das Datum und die Uhrzeit beinhalten, weisen eine sehr hohe Kardinalität auf. Hier empfehle ich dir, das Datum und die Uhrzeit in zwei separaten Spalten zu speichern. Eine weitere Frage, die Du stellen kannst: Benötige ich die Zeitangabe bis auf die Sekunde genau oder reicht eine Auflösung in Stunden?
Dezimalzahlen: Ein Wert liegt in der Datenquelle im Format 23.43538475 vor. Sind alle Nachkommastellen relevant, oder kannst Du diese auf zwei Nachkommastellen fixieren?
Die Anzahl der Spalten ist nach der Kardinalität der zweitwichtigste Faktor. Hier kannst Du dich fragen, welche Spalten für deinen Bericht oder dein Dashboard benötigt werden. In der Regel sind in der Datenquelle neben den relevanten Daten auch technische Angaben enthalten, welche für die Datenauswertung nicht relevant sind. Hier gilt, weniger ist mehr. Sind weniger Spalten vorhanden, kann die Engine eine optimalere Sortierung evaluieren und somit die Kompressionstechniken effektiver anwenden.
Der Datentyp spielt im Vergleich zu den anderen Faktoren eine untergeordnete Rolle. VertiPaq analysiert die Daten beim Import von der Datenquelle und konfiguriert den Datentyp automatisch. Ich empfehle dir jedoch immer zu überprüfen, ob dieser korrekt konfiguriert wurde und bei Bedarf Änderungen vorzunehmen.
Mittels berechneten Spalten und Tabellen können Daten schnell und einfach erweitert werden.
Da diese jedoch erst nach der Evaluierung der besten Sortierung berechnet werden, können diese nicht so effektiv komprimiert werden wie importierte Daten. Daher solltest Du, wenn immer möglich, solche Spalten und Tabellen in der Datenquelle selbst berechnen und anschliessend mit Power BI importieren.
Um herauszufinden, welche Spalten den meisten Speicherplatz beanspruchen und damit das grösste Potenzial für eine Optimierung bieten, bietet sich DAX Studio an. Dieses Zusatztool zu Power BI liefert unter anderem umfangreiche Informationen über die Beschaffenheit eines Datenmodells. Eine Schritt-für-Schritt-Anleitung findest Du hier.
Fazit
Es lohnt sich, etwas Zeit in die Optimierung eines Datenmodells zu investieren. So können wertvolle Ressourcen gespart werden und bei der Anwendung kommt es zu weniger Wartezeit. Und nicht zuletzt lässt sich ein aufgeräumtes Datenmodell während seiner Laufzeit einfacher unterhalten und anpassen.
Weiterführende Links zum Thema:
Inside VertiPaq – Compress for Success
DAX Studio