Schon mal sowas gesehen…?

Das Power BI “Composite”-Modell ist da! (Derzeit Preview)

Die Community ist in ekstatischer Euphorie, so auch ich. Lange haben wir uns danach gesehnt, lange gewartet, es herbei gevotet.

Ein Meilenstein, ein Game Changer.

Und warum dann dieser Titel!?

Fangen wir vorne an…

Was ist “Composite” überhaupt?

Die effizientes und schnellste Speicher- und Abfrageart ist die von Power BI selbst, nämlich “Tabular” – die Daten liegen hoch komprimiert im Memory und sind somit schnell und sicher abzufragen und alle Relationen zwischen den Daten sind auch enthalten für rasche Filterung, dieses Tabular Modell ist das “Dataset”.
Auch wenn es zuvor einmal Datenbanktabellen waren oder Excel-Dateien, einmal importiert werden sie zum Tabular Model, daher ist der “Import”-Mode immer zu bevorzugen.

Aber es gab einen entscheidenden Nachteil!

Mit der Verwendung eines zentralen Dataset für mehrere Reports mit der Quelle als AAS oder PowerBI (sogenannte “Live-Connection”), konnte man keine weiteren Quellen mehr dazu anbinden.

Und das ist nun möglich!

Was ist der große Vorteil von “Composite”?

Nicht nur technisch hat man nun die Möglichkeit Tabular-Modelle im Speicher mit weiteren Quellen und Modellen zu verbinden.

Der Meilenstein ist, dass nun wirklich Self-Service-BI zum Leben erwacht.
Es kann ein zentrales, geprüftes Enterprise-Modell geben und dazu die Möglichkeit für Keyuser, weitere fachlich spezifische Quellen anzubinden, ob es nun die Budgetzahlen aus dem Excel sind, oder Rohstoffpreise aus dem Internet.

Eine weitere Möglichkeit ist, zu den schnellen Online-Daten weitere Detaildaten mit direkten Datenbankabfragen zu erweitern, somit müssen nicht mehr alle ganz granularen Zeilen in das Modell.
Etwas ähnliches gibt es zwar als “Aggregations”, aber auch nicht für Live-Connections.

Wo ist nun die Gefahr?

Es kann zu großen Performance-Problemen kommen bei Direct Query.

Nicht weil die Technologie langsam ist, sondern weil ein Modell gut überlegt und konzipiert sein will und dazu muss man verstehen was bei der Abfrage passiert.

Es ist verlocked gleich einmal eine Tabelle dazu zu hängen.

Ein kleines Beispiel

Unser zentrales Enterprise-Modell hat summierte Verkäufe pro Produkt und Tag.

Das wird als Dataset auf Power BI Service geladen und steht für alle Reports als Basis zur Verfügung.

Eine seltener Bedarf sind nun die ganz detaillierten einzelnen Buchungszeilen, pro Kunde, Shop und Produkt.
Diese können als direkte Datenbankabfragen ins Modell dazu gehängt werden.

Im Report kann beides verwendet werden und auch gemeinsame Filter werden angewendet.

Die Abfrage

Das Online-Modell ist mit den Tabellen für die Direktabfragen über Relationen verbunden.

Und das ist der entscheidende Punkt!
Wie kann ein Tabular-Modell joinen mit einer relationalen Tabelle?
Power BI versucht hier eine effiziente und performante Abfrage zu generieren, manchmal geht es mit DAX alleine, manchmal eine Kombination mit SQL.

Und manchmal gelingt das nicht wirklich gut…

Die Gefahr: Der Join

Dieses einfache Modell produziert DAX-Statements mit 3.000 Zeilen!

Der Join wird manchmal über Einzelwertlisten und über Unions aufgelöst…

In diesem Beispiel-Modell gibt es immer noch relativ rasche Ergbnisse.

Natürlich begegnen uns immer wieder Modelle, die mangelhaft designt sind und deshalb langsam, aber hier ist es ein perfektes und korrektes Modell.

Der nächste Versuch war mit einem realen komplexen Modell.

Ich habe nur eine externe Tabelle eingebunden über einen Integer-Key, das DAX-Statement hatte 50.000 Zeilen! Die Abfrage wurde extrem langsam.

Und dabei geht es nicht um die Größe des angebundenen Objektes, sondern des Tabular-Modells, je nach Relation und natürlich die Abfrage selbst.

Lösungen

Eine ganz einfache Lösung ist grundsätzlich “Import” zu wählen, somit wird jede weitere Quelle auch Teil des Tabular-Modells.

Die genau gleiche Abfrage wird wieder ein einfaches DAX.

Das wird nicht immer möglich sein, insbesondere wenn man eben große Datenmengen im Modell vermeiden möchte, dafür könnte man aber eventuell “Aggregations” verwenden und den Mode “Dual”.

Conclusio

“Composite” für Datsets und AAS ist eine große Innovation und bringt enorme Möglichkeiten für die Geschäftsanwendung und Self-Service BI, ein Meilenstein von Power BI!

Aber das Modell muss mit großer Sorgfalt designt und getestet werden, was wiederum im Widerspruch zum spontanen Self-Service steht.
Selbst perfekte Modelle können seltsame Abfragen generieren.

Derzeit ist das Feature auch noch in “Preview”, es wird hier bestimmt auch noch Verbesserungen geben.

Richtig eingesetzt wird “Composite” mit Datasets zur grenzenlosen Möglichkeit für Enterprise-Modelle mit Self-Service BI.

Teile Deine Erfahrungen mit einem Kommentar unten!