Laden von Websitedaten in Power BI Service ohne Verwendung eines Gateways
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:
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:
Wenn beim Klick darauf, werden die Details angezeigt:
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:
Danach wird die Optionen für den Refresh angezeigt, und auch wenn Sie einen Refresh auslösen, wird es reibungslos funktionieren: