Kennen Sie diese Meldung? „Diese Datei kann nicht heruntergeladen werden. Sie können diese Datei im Moment nicht herunterladen, weil sie mithilfe eines XMLA-Endpunkts geändert wurde.“ Wie Sie das Power BI Datenmodell trotzdem wieder in eine PBIX-Datei zurück kopieren, beschreibe ich in diesen Beitrag.
HINWEIS: Der hier beschriebene Workaround wird nicht offiziell von Microsoft unterstützt. Wenn Sie diesen Workaround anwenden, geschieht dieses auf eigene Gefahr.
Benötigte Werkzeuge:
- pbi-tools (extrahieren und kompilieren der PBIX-Datei)
- XMLA-Endpunkt (lesen des Datenmodells – Power BI Premium Funktionalität)
- Tabular Editor (extrahieren und speichern des Datenmodells)
Zu Anfang erstellen wir eine leere PBIX-Datei, indem wir den Power BI Desktop öffnen und direkt über „Datei > Speicher untern“ die Datei speichern. In diesem Beispiel nenne ich die Datei „Container.pbix“
Nun extrahieren wir die PBIX-Datei mithilfe von pbi-tools und den Parameter „-modelSerialization Raw“. Der Parameter sorgt dafür, dass die Modellinformationen nicht auf Verzeichnisse und Dateien aufgeteilt werden, sondern in einer database.json Datei (BIM-Datei) gespeichert werden.
pbi-tools extract '.\Container.pbix' -modelSerialization Raw
Mit dem Tabular Editor verbinden wir uns gegen den XMLA-Endpunkt unseres Arbeitsbereiches.
Wählen dann die entsprechende Datenmodell (Datenbank) aus.
Über „File > Save as“ überschreiben wir nun mit dem geladenen Modell die database.json Datei im Verzeichnis „Model“ unserer extrahierten „Container.pbix“ Datei
Jetzt kompilieren wir den Container mit dem integrierten Datenmodell mithilfe von pbi-tools.
pbi-tools compile '.\Container' '.\' PBIT -overwrite
Wenn wir nun die kompiliert PBIT-Datei mit dem Power BI Desktop öffnen und die Dateiaktualisierung durchführen, haben wir das Datenmodell wieder in einer PBIX-Datei.
Das war es auch schon. ?
BONUS:
Wenn Ihr Datenmodell eine inkrementelle Aktualisierung verwendet, müssen Sie vor der Kompilierung die database.json noch etwas bearbeiten.
Sie müssen die Partitionen vom Typ „policyRange“ durch eine Partition vom Typ „m“ mit der entsprechenden „expression“ ersetzten.
Die benötigte „expression“ finden Sie als „sourceExpression“ in der entsprechenden „refreshPloicy“ der Abfrage in der database.json Datei.
Du willst mehr coole Power BI Inhalte?
Dann folge mir auf LinkedIn und füttere deinen Newsfeed mit meinen Inhalten:
Marcus Wegener | https://www.linkedin.com/in/marcuswegener/