Blog

Power BI mit möglichst wenig Daten in der Cloud

Die „normale“ Power BI-Variante (alles in Cloud) wäre, dass man große Power BI-Dateien, die alle Rohdaten beinhalten, in der Cloud hochlädt. Dadurch erzeugt man in der Cloud ein sog. „Semantikmodell“, das der Report selbst so wie andere Reports konsumieren können.

Dieses „Semantikmodell“ ist technisch nichts anderes als die SQL Server Analysis Services Engine, mit dem einzigen Unterschied, dass sie in der Cloud liegt, und die Power BI-Cloud sich um die Datenaktualisierung kümmert.

Eine andere Variante wäre, dass man dieses „Semantikmodell“ einfach on-premise auf einem Server laufen lässt. Die normale ERP-Datenbank läuft ja heute schon über die „SQL Server Database Engine“ – da könnte man z.B. auf dem gleichen Server zusätzlich das Feature „Analysis Services“ installieren. Im Installer von SQL Server ist das dieses Häkchen hier, das man setzen muss:

Da gibt es 2 verschiedene Installations-Modi: Multidimensional und tabellarisch. Wichtig wäre hier, „tabellarisch“ auszuwählen.

Dann werden die Semantik-Modelle nicht mehr mit Power BI entwickelt, sondern wie früher üblich mit Visual Studio. Das was man dort tut, ist aber ganz ähnlich zu Power BI – man definiert Measures in DAX, gibt Relationen unter den Tabellen an, und bindet Quelldaten an. Am Ende klickt man auf „deploy“, und dann wird das Modell auf dem Server bereitgestellt. Datenaktualisierung löst man über xmla-Befehle, die im SQL Server Agent ausgeführt und über einen grafischen Editor erzeugt werden können.

Nun kann man dieses Modell sowohl aus Excel heraus als auch in Power BI nutzen:

In beiden Fällen werden zur Laufzeit MDX-Queries an dieses Modell gesendet, und zurück kommt jeweils nur genau die voraggregierte Information, die dem Benutzer gerade angezeigt wird. Um beispielsweise das Card Visual mit dem Gesamt-Auftragseingang anzuzeigen, wird nur die Gesamtsumme des Auftragseingangs an das Frontend gesendet. Ich gehe davon aus, dass Power BI in der Cloud diese Ergebnisse noch nicht einmal zwischenspeichert.

Damit hätten wir die Rohdaten nicht mehr in der Cloud, sondern würden nur noch im Cloud-Frontend (also Power BI) voraggregierte Werte anzeigen.