top of page

Tutorial: Dynamische Transformation in Power Query

Hallo zusammen, ich bin Marcus. Heute möchte ich euch zeigen, wie ihr in Power Query die Spalte, auf die gefiltert wird, dynamisieren könnt. Einer meiner Kunden hat mich kürzlich genau danach gefragt, und ich denke, das könnte auch für viele von euch interessant sein.



Ausgangslage: Filtern nach Stadt

Wir starten mit einer Tabelle in Power Query, die verschiedene Filialen enthält. Die Daten umfassen unter anderem die Städte, in denen diese Filialen liegen. Die Grundidee ist, dass wir die Daten nach bestimmten Städten filtern wollen, beispielsweise nur die Filialen in Köln anzeigen.

Normalerweise könnte man einfach einen Filter auf die Spalte "Stadt" setzen und den Wert "Köln" auswählen. Das ist leicht machbar. Aber wie wäre es, wenn wir diesen Filter dynamisch gestalten könnten?


Einfacher Spalten-Filter in Power Query

Schritt 1: Parameter erstellen

Zunächst erstellen wir einen Parameter, der den zu filternden Wert enthält. In unserem Beispiel setzen wir den Parameter auf "Köln". Diesen Parameter können wir dann in unsere Abfrage einbauen und sehen, dass die Filterung weiterhin funktioniert. Jetzt ändern wir den Parameterwert auf "New York" und siehe da, die Abfrage zeigt uns die gefilterten Daten für New York an.


Filter mit Parameter in Power Query

Schritt 2: Dynamische Spaltenauswahl

Aber was, wenn wir nicht nur den Wert, sondern auch die Spalte dynamisch bestimmen möchten? Wenn wir versuchen, die Spalte direkt als Parameter einzusetzen, werden wir schnell merken, dass Power Query eine Fehlermeldung ausgibt. Das liegt daran, dass Power Query die Spalte nicht direkt als Text auswerten kann.

Zum Glück bietet Power Query eine Funktion namens Expression.Evaluate, mit der wir Textausdrücke ausführen können. Das bedeutet, wir können ein Textdokument erstellen, das die Abfrage beschreibt, und die entsprechenden Elemente dynamisch einfügen und auswerten lassen.


Schritt 3: Verwendung von Expression.Evaluate

Ich habe dies in einer Beispielabfrage vorbereitet. Wir verwenden Expression.Evaluate, um die Spalte und den Wert dynamisch zu übergeben. Hier ist der Ablauf:

  1. Table.SelectRows: Wir wählen die Zeilen der Tabelle basierend auf einem vorherigen Anwendungsschritt aus (in diesem Fall „geänderter Typ“).

  2. Parameter übergeben: Wir übergeben die Spalte und den Wert als Parameter.

  3. Environment Information: Wir übergeben die Umgebungsinformationen, damit Power Query weiß, welche Spalte und welchen Wert es verwenden soll.

Hier ist ein Code-Schnipsel, der zeigt, wie das funktioniert:


= Expression.Evaluate(

"Table.SelectRows(#""Geänderter Typ"", each ([" & Spalte & "] = Wert))",

[#"Geänderter Typ" = #"Geänderter Typ", Table.SelectRows = Table.SelectRows, Wert = Wert]

)


In diesem Beispiel wird die Spalte dynamisch bestimmt, und wir sehen die gefilterten Daten für die entsprechende Stadt oder das Land. Ändern wir den Parameter auf "Deutschland" und die Spalte auf "Land", zeigt die Abfrage alle Filialen in Deutschland.


Filter mit Expression Evaluate in Power Query

Fazit

Mit der dynamischen Filterung in Power Query könnt ihr sowohl die Spalte als auch den Filterwert flexibel anpassen. Das eröffnet zahlreiche Möglichkeiten für die Datenanalyse und -aufbereitung. Probiert es aus und lasst mich in den Kommentaren wissen, für welche Anwendungsfälle ihr diese Technik einsetzen möchtet.

Bis dahin, ciao!

6 Ansichten0 Kommentare

Aktuelle Beiträge

Alle ansehen

Comments

Rated 0 out of 5 stars.
No ratings yet

Add a rating
bottom of page