Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

Quellenänderung in Abfragen schnell durchführen
#1
Moin,

ich habe ein Problem. Ich habe mir eine Exceldatei gebastelt in der ich Abfragen für externe Arbeitsmappen eingebaut habe.

Mein Problem ist nun, dass ich die Abfragen immer mit anderen Dateien ausführen möchte und hierzu momentan jede einzelne Quelle wieder auswählen und warten muss bis Excel sie lädt.

Ich würde gerne einen Weg finden, wie ich das vor dem Laden in einer Liste erledigen kann in der ich Pfade eingeben kann.


Datei mit Abfragen anbei.


Über Hilfe freue ich mich.


Angehängte Dateien
.xlsx   Abfrage.xlsx (Größe: 130,93 KB / Downloads: 8)
Top
#2
1. Du erstellst eine Tabelle in der du die Datenquellen die du anzapfen möchtest einträgst.
2. In einer 2. Spalte bastelst du dir mit Textfunktionen den Text für die Quelle selbst zusammen.
3. Lade diese Tabelle in PQ.
4. Verteile jede Zelle dieser Tabelle auf separate Abfragen zum Beispiel indem du einen Index einfügst und nach diesem filterst
-> 1. Abfrage hat den Index, 2. Abfrage den Index 2 usw
Um das hinzubekommen fügst du zuerst den Index ein und duplizierst dann die Abfrage so oft wie nötig und filterst dann
5. Jede deiner Abfragen besteht jetzt aus einer einzigen Zelle, die den korrekten Code enthält um die zugehörige Datei anzuzapfen
Du klickst jetzt auf Drill-Down und es bleibt nur noch der Code als Parameter stehen.
6. Führe jeden Parameter als Code aus

Bei neuen Datenquellen musst du lediglich deine ursprüngliche Tabelle anpassen und dann "Alle Aktualisieren"

Bei 6. bin ich mir ehrlich gesagt nicht sicher wie man es anstellt :D

Aber so müsste es im Grunde funktionieren.
Du musst nur noch rausfinden wie man den Text eines Parameters ausführt.

Muss ich jetzt auch mal googeln.

Wollte aber schon mal antworten, damit du nachvollziehen kannst wie ich es angehen würde.

Sowas in der Art wie hier: https://accessanalytic.com.au/powerquery...arameters/

Bei mir zickt diese Methode aber wegen der Firewall.
Aber in diese Richtung würde es gehen.

BG ruppy
Top
#3
Vielen Dank,
ich mache mich dann mal dran, das hin zu bekommen.
Top
#4
Moin,

ich habe jetzt einiges ausprobiert, aber ich bekomme es nicht hin, dass Excel mir die Datei aus dem Pfad lädt. 
Somit kann ich die Datei auch nicht bearbeiten bzw. keine weiteren Befehle eingeben. Es wird mir nur der Dateipfad angezeigt, nachdem ich Drill-Down ausgeführt habe.
Top
#5
Wenn du dem Link folgst den ich vorher gepostet habe, siehst du das nach dem Drill-Down das Ergebnis als Parameter verwendet werden kann.

Du musst diesen benennen bspw. "Parameter1".

Dann erstellst du eine neue Abfrage auf irgendeine Excel-Datei. Dafür wird M-Code generiert.

Diesen Code kannst du anpassen, als Argument für die Datei kannst du den "Parameter1" übergeben.

Dann kann es allerdings sein, dass die Firewall Probleme macht.

Schau mal, ob du so weit kommst.

Mehr habe ich auch noch nicht getestet. Mache ich morgen bzw. übermorgen.

Vllt gibts auch die Möglichkeit Code in Excel über Textfunktionen zu genieren und diesen von PQ ausführen zu lassen.

Muss ich aber auch noch testen. Wie gesagt schau mal, ob du bis zu dem Firewall Problem kommst.

BG ruppy
Top
#6
Vielen Dank,
bisher kann ich nur den Drill-Down ausführen und anschließend klicke ich auf "speichern und laden in" und dann klicke ich auf "nur Verbindung erstellen". Dann komme ich nicht weiter.
Top
#7
Du sollst die Daten nach Drill-Down nicht laden.

Nachdem du den Drill-Down durchgeführt hast schreibst du eine neue (leere) Abfrage (hier am Bsp. einer CSV, Logik aber übetragbar):

Csv.Document(File.Contents("C:\XXX.csv"),[Delimiter=",", Columns=10, Encoding=1252, QuoteStyle=QuoteStyle.None])

aber mit

Csv.Document(File.Contents(hier kommt der Name der Abfrage rein, die den Drill-Down enthält),[Delimiter=",", Columns=10, Encoding=1252, QuoteStyle=QuoteStyle.None])

Dann sollte PQ genau die Daten laden auf die dein Parameter verweist.

Problem ist aber wie gesagt die Firewall.

Scheitn ein bekanntes Problem zu sein siehe:

https://community.powerbi.com/t5/Desktop...8637#M5539

Lösungsansatz (nicht getestet):

http://www.excelguru.ca/blog/2015/03/11/...mbination/

Daran kannst du dich mal entlang hangeln.

FRAGE AN ALLE LESENDEN:

Kann man PQ iwie sagen der Inhalt ist valider M-Code führe ihn bitte aus?

Dann könnte man sich in Excel mit Textfunktionen dynamisch Code erstellen und ausführen lassen.
Habe schon ein bisschen die Funktionsreferenz studiert, finde aber leider nichts.

Weiß jemand mehr?

Das wäre nämlich ein extrem mächtiger Use Case für PowerQuery.

BG ruppy
Top
#8
Habe was gefunden geht mit Expression.Evaluate("Text den auszuwerten gilt", #shared).

Allerdings bleibt das Firewall-Problem :D

und die Geschichte mit der "staging area" wie in dem einen Blog-Post beschrieben, habe ich noch nicht durchdrungen.

BG ruppy
Top
#9
Wo finde ich den Ausdruck Expression.Evaluate?

Muss ich das im erweiterten Editor eingeben?
Top
#10
Richtig den musst du im erweiterten Editor eingeben.
Das hier:

Csv.Document(File.Contents("C:\XXX.csv"),[Delimiter=",", Columns=10, Encoding=1252, QuoteStyle=QuoteStyle.None])

Habe ich auch nicht selbst geschrieben. Dieser Code wird von Power Query erstellt, wenn man eine CSV anzapft.

Als Dateipfad kannst du dann den Parameter angeben, den du durch den Drill-Down erhälst.

Soweit sollte dann alles funktionieren. Aber dann kommt wie des Öfteren erwähnt das Problem mit der Firewall, wofür es scheinbar diese Lösung gibt:

http://www.excelguru.ca/blog/2015/03/11/...mbination/

Das Problem ist also bekannt und kann wohl auf diese Weise behoben werden. Wie gesagt durchdrungen habe ich es noch nicht.

BG ruppy
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste