Laden von Websitedaten in Power BI Service ohne Verwendung eines Gateways

April 10, 2022
Denis Selimovic
Power Query / Mcomment 3Created with Sketch Beta.0 comments

This post is also available in: Englisch

Oftmals erstelle ich in Power BI Desktop einen Bericht mit Daten von einer Website. Angenommen, wir erstellen einen Bericht und laden die Bevölkerung nach Land von der Wikipedia-Seite. Die Daten werden in Power Query aus dem Internet geladen, und irgendwann wird der Bericht im Power BI Service veröffentlicht.

Option zur zeitlich geplanten Aktualisierung ist deaktiviert

Nach der Veröffentlichung des Berichts möchte ich den Bericht aktualisieren. Aber wenn ich die Aktualisierung planen will, sehen die Einstellungen folgendermaßen aus:

00 power bi service refresh dataset grayed out

Warum ist der Abschnitt “Scheduled Refresh” ausgegraut? Ich sehe keinen Grund, warum das so sein sollte.
Aber an einer Stelle gibt es einen kleinen Anhaltspunkt. Beim Versuch, die Daten manuell zu aktualisieren, wird ein Fehler angezeigt:

01 hint after refresh

Wenn beim Klick darauf, werden die Details angezeigt:

02 gateway is installed

Fehlermeldung erwähnt Gateway

Die Fehlermeldung ist etwas verwirrend: Warum beklagt sich Power BI über ein Gateway? Wir laden aus der Cloud (Wikipedia) direkt in die Cloud (Power BI Service). Es macht an dieser Stelle absolut keinen Sinn, ein Gateway zu verwenden.
Standardmäßig wird zum Laden einer Website in Power Query die Funktion Web.BrowserContents verwendet. In der offiziellen Dokumentation zu dieser Funktion wird nicht erwähnt, warum ein Gateway erforderlich sein sollte. Es wird lediglich erwähnt, dass der Zugriff auf die Website “wie von einem Webbrowser angezeigt” erfolgt. Ich vermute, dass die HTML-Seite von der lokal installierten Browser-Engine geöffnet wird. Und dafür ist ein lokaler Server erforderlich, da der Power BI-Dienst sie nicht mit einer Browser-Engine öffnen kann. Aber wie gesagt, das ist nur meine Vermutung. Falls hier jemand mehr weiß, dann bitte schreibt das in die Kommentare.

Fix mit Web.Contents Funktion

Die eigentliche Frage ist: Wie können wir das lösen? Und das geht erstaunlich einfach. Anstelle der Funktion Web.BrowserContents können wir die Funktion Web.Contents verwenden und die Website wird ohne Gateway geladen.

Hierfür genügt es, die Funktion direkt im Power Query-Code zu ändern:

Nach der Änderung zur Funktion Web.Contents wird Power BI problemlos ohne Gateway laden.
Nach der Änderung zur Funktion Web.Contents wird Power BI problemlos ohne Gateway laden.

Danach wird die Optionen für den Refresh angezeigt, und auch wenn Sie einen Refresh auslösen, wird es reibungslos funktionieren:

Die Option für eine geplante Aktualisierung ist wieder verfügbar
Die Option für eine geplante Aktualisierung ist wieder verfügbar
Manuell ausgelöst, wird das Dataset aktualisiert
Manuell ausgelöst, wird das Dataset aktualisiert