dynamisches Speichern von Internetdateien mit Power BI Desktop

Nachdem ich Euch im Beitrag Speichern von Internetdateien mit Power BI Desktop – Teil 1 gezeigt habe, wie Ihr unter Zuhilfenahme von R ganz einfach Dateien runterladen und speichern könnt, werde ich Euch in diesem Teil zeigen, wie ihr dies auch dynamisch erledigen könnt.

Parameter…..

Parameter sind grossartig und werden uns helfen, die ganze Abfrage dynamischer zu gestalten.

Als Erstes erstellen wir uns also einen neuen Parameter:

image

und geben die notwendigen Angaben ein:

image

.. klicken “OK” und schon haben wir den ersten Parameter.
Ich habe bewusst den Pfad der Homepage vom Dateinamen getrennt. Falls auf der Seite mehrere Dateien zum Download angegeben werden, kann ich diese individuell ansteuern.

Also erstellen wir uns einen Parameter für die gewünschte Datei. Wir rufen folglich einen neuen Parameter auf und geben ein:

Name = SourceFileName
Beschreibung = Name der Datei
Typ = Text
Vorgeschlagener Wert = Beliebiger Wert
aktueller Wert = issuers_all_en.csv

….und dann noch einen Parameter für den Speicherordner:
Name = DestinationShare
Beschreibung = Name des Speicherordners
Typ = Text
Vorgeschlagener Wert = Beliebiger Wert
aktueller Wert = C:/PowerBI/Securities/

….und noch einen weiteren für den gewünschten Dateinamen:
Name = DestinationFile
Beschreibung = Name der gespeicherten Datei
Typ = Text
Vorgeschlagener Wert = Beliebiger Wert
aktueller Wert = dynamischer_Download.csv

So, das wäre es dann auch schon. Wir haben soeben vier Parameter erstellt, die uns die ganze Abfrage dynamisch halten.

….funktionieren in “R” nicht…

Also verwenden wir doch diese Parameter im “R” Skript.

image

….und drücken “OK”….

image

…. und wir erhalten eine unschöne Fehlermeldung!

Ich kann es kurz machen: ich habe keinen Weg gefunden, innerhalb des R Skripts das Ganze mit Parameter zum Laufen zu bringen.

Was tun?
Wer schon mit anderen Programmiersprachen gearbeitet hat, kennt sicherlich den Trick, ein Statement als Textvariable zu erfassen und dann auszuführen. Und tatsächlich, dieser Weg funktioniert auch hier!

Ich habe also im Query Editor den erforderlichen String zusammengesetzt:

RScript = ”
download.file(” &
“””” & SourceURL & SourceFileName & “”””
&
“, destfile = ” &
“””” & DestinationShare & DestinationFile & “”””
&
“, method = “”auto””, quiet = FALSE)
“)

Als nächstes habe ich ein R-Skript aufgerufen mit:
R.Execute(RScript)

PowerBI hat zwar eine Meldung rausgegeben.

image

Aber mit einem Klick auf “Edit Permission” erscheint das nächste Fenster, welches ebenfalls mit “OK” zu bestätigen ist.

image

In diesem Bild ist ersichtlich, wie mein String innerhalb des “R” Editors schon richtig umgewandelt wurde.

Und wir erhalten…

image

… eine leere Tabelle! Das war aber nicht das gewünschte Resultat.

Nach einigem Suchen und Testen habe ich aber die Lösung gefunden. Das Skript ist so zu ergänzen, dass das csv.File gelesen wird. Also noch
MyData <- read.csv(file = ” &
“””” & DestinationShare & DestinationFile & “”””
& “, header=TRUE, sep=””;””)

eingeben und wir haben endlich eine Tabelle, welche wir nun noch erweitern müssen.

image

Und haben wir unsere gewünschten Daten:

image

Zum Schluss noch der Beweis, dass die Datei auch wirklich angelegt wurde noch ein Screenshot:

image

Schlussfolgerung

Mit der überarbeiteten Methode ist auch das dynamische Speichern von Internetdateien mit Power BI Desktop jederzeit möglich. Die Möglichkeiten sind einzig durch Eure Fantasie begrenzt.
Mehr Artikel über Power Query findet Ihr im Power Query Online Buch.

Happy Quering!