Kommentare zu: Wie Du Spalten in Power Query dynamisch nach Werten filterst https://ssbi-blog.de/blog/business-topics/wie-du-spalten-in-power-query-dynamisch-nach-werten-filterst/ Wir lieben Microsoft Power BI Fri, 23 Apr 2021 15:01:11 +0000 hourly 1 https://wordpress.org/?v=6.7.2 Von: Lars Schreiber https://ssbi-blog.de/blog/business-topics/wie-du-spalten-in-power-query-dynamisch-nach-werten-filterst/#comment-2050 Fri, 23 Apr 2021 15:01:11 +0000 https://ssbi-blog.de/?p=5423#comment-2050 Als Antwort auf laurent.

Hallo Laurent,

Du hast vollkommen recht, dass es hier um das Filtern von ZEILEN geht. Und ja, der Titel kann dadurch irreführend sein. Dennoch handelt es sich nicht um einen Irrtum. Viele Excelnutzer suchen nach „Spalten Filtern“, weil sie den Filter ja in einer Spalte setzt, auch wenn Sie diesen dann nutzen, um die Zeilen einzuschränken.

Danke für Deinen Kommentar und viele Grüße,
Lars

]]>
Von: laurent https://ssbi-blog.de/blog/business-topics/wie-du-spalten-in-power-query-dynamisch-nach-werten-filterst/#comment-2049 Fri, 23 Apr 2021 07:20:49 +0000 https://ssbi-blog.de/?p=5423#comment-2049 Kann es sein, dass hier ein sematischer Irrtum vorliegt?
Aus meiner Sicht werden nicht Spalten gefilter sondern Zeilen. Das Filtern von Spalten hätte aus meiner Sicht zur Folge, dass wir nach der Filterung weniger Spalten haben. Das Filtern von Zeilen dagegen hätte zur Folge, dass nach der Filterung weniger Zeilen vorhanden sind.

Die M Formel bestätigt aus meiner Sicht auch diese Annahme: Table.SelectRows

]]>
Von: Dominik https://ssbi-blog.de/blog/business-topics/wie-du-spalten-in-power-query-dynamisch-nach-werten-filterst/#comment-1979 Thu, 25 Mar 2021 17:32:03 +0000 https://ssbi-blog.de/?p=5423#comment-1979 Hallo Lars,

das hat mich in die richtige Richtung gebracht – vielen Dank.

Aber ich habe eine Frage: Warum hast du ContainsAny statt Contains verwendet? Ist das gleichwertig? Dann könntest du dir die geschweiften Klammern um das Feld [Buchstabe] sparen. Vor allem hat es bei mir aber auch einen riesigen Unterschied in der Performance gemacht: Bei ContainsAny wurden erst alle Daten vom SQL Server geladen (~100 Mio Zeilen – dauert ewig) und anschließend gefiltert. Wenn ich Contains verwende werden die Daten scheinbar direkt im SQL Server gefiltert und nur die relevanten geladen (~3 Mio Zeilen). Zumindest vermute ich aufgrund des Zeilen-Zählers und der Performance beim Aktualisieren, dass dies passiert.

Hast du damit Erfahrung oder weißt, warum sich PowerQuery da unterschiedlich verhält?

Viele Grüße!
Dominik

]]>
Von: Sylvia https://ssbi-blog.de/blog/business-topics/wie-du-spalten-in-power-query-dynamisch-nach-werten-filterst/#comment-1728 Wed, 30 Dec 2020 10:02:12 +0000 https://ssbi-blog.de/?p=5423#comment-1728 Hallo Lars,
vielen Dank schon einmal für diese tolle Lösung. Ich habe sie gut verstanden und konnte sie umsetzten, so dass es auch funktioniert. 😉

Nun habe ich aber das Problem, dass sich die Filterliste nicht aktualisiert, wenn ich eine Änderung vornehme. Könnte es daran lieben, dass die „Quellliste“ nur in Excel und nicht zusätzlich in PQ liegt? Dachte ich nehme als Quelle für die Liste die Tabelle aus der Exceldatei.
Du schreibst ganz oben: „Ausgangssituation ist, dass ich sowohl die zu filternden Werte, als auch die Filtertabelle in Power Query importiert habe.“ Das verwirrt mich etwas.

]]>
Von: Sebastian https://ssbi-blog.de/blog/business-topics/wie-du-spalten-in-power-query-dynamisch-nach-werten-filterst/#comment-1558 Wed, 21 Oct 2020 10:36:08 +0000 https://ssbi-blog.de/?p=5423#comment-1558 Als Antwort auf Sebastian.

Hallo Lars,

habe die Lösung zwischenzeitlich selbst gefunden und will sie dir nicht vorenthalten:

Table.SelectRows(#“Vorheriger Schritt“, each List.ContainsAny({[Spalte_mit_Werten]},FilterListe,(x as text, y as text)=>Text.Contains(x,y)))

Die „Filterliste“ kann sowohl die ganze Zeichenfolge oder nur Anteile der zu suchenden Zeichen enthalten.

]]>
Von: Sebastian https://ssbi-blog.de/blog/business-topics/wie-du-spalten-in-power-query-dynamisch-nach-werten-filterst/#comment-1551 Tue, 20 Oct 2020 03:14:23 +0000 https://ssbi-blog.de/?p=5423#comment-1551 Hallo Lars,

danke für den hilfreichen Artikel. Ich konnte deine Lösung bereits mehrfach erfolgreich einsetzen. Bei meinem aktuellen Datensatz würde ich diese Vorgehensweise auch gern anwenden, allerdings müsste dazu der dynamische Filter auch Textteile verwerten, anstatt nur eindeutige Treffer (Bsp.: die Spalte enthält Werte wie 01-2020/001, 02-2020/001, 02-2020/002, 03-2020/001 usw. Einige Werte kann ich eindeutig und vollständig aufzählen, bei anderen würde es helfen, wenn alle Werte ausgeschlossen werden, die mit 01/2020 beginnen, egal was danach folgt). Hast du dafür auch eine kompakte Lösung? Aktuell zerlege ich die Zeichenfolgen und filtere in mehreren Stufen, was allerdings immer wieder Eingriffe in die Abfrage erforderlich macht.

Viele Grüße, Sebastian

]]>
Von: Jörg https://ssbi-blog.de/blog/business-topics/wie-du-spalten-in-power-query-dynamisch-nach-werten-filterst/#comment-1196 Wed, 12 Aug 2020 14:12:33 +0000 https://ssbi-blog.de/?p=5423#comment-1196 Lieber Lars,

herzlichen Dank fürs Teilen deines Wissens und deiner Erfahrungen. Ich hatte heute die Anforderung einen dynamischen Filter für eine Spalte zu definieren. Mit meinen deutschsprachigen Suchbegriffen bin ich wieder einmal bei dir gelandet und fündig geworden.

In einem etwas anderen Sinne von ‚Sharing is caring‘ möchte ich hier kurz meine Erfahrungen mit dem listenbasierten Lösungsansatz zurückmelden und darlegen weshalb ich schlussendlich den Weg über einen Join gewählt habe:

Meine Selektionskriterien liegen in einer Excel-Zelle und waren durch Kommata getrennt. Beim Einlesen eines einzelnen Wertes stehen in Excel-PQ zunächst nur einige Transformations-Optionen an der Programmoberfläche zur Verfügung. Die Option ‚Text unterteilen“ (M-Funktion Text.Split() ) machte aus den Werten der Zelle die gewünschten Einzelwerte. Prima dachte ich, doch der Datentyp in der zu filternden Spalte war vom Typ Zahl. So lieferte die obige Lösung zunächst keine Datensätze, weil eine 1 vom Typ Text nicht einer 1 vom Typ Zahl entspricht. Also Liste in Tabelle umgewandelt, Typ auf Zahl geändert und wieder in eine Liste transformiert. So funktionierte es dann.

Bei den von mir verarbeiteten Quelldaten handelte es sich um SAP-Exporte im Textformat. Bei einer kleinen Datei mit knapp 4.000 Zeilen bemerkte ich schon, dass die Abfrage nach Implementierung des dynamischen List-Filters deutlich länger dauerte.

Die Performance beim Import einer Faktentabelle mit gut 250.000 Zeilen war dann nicht mehr akzeptabel. War die Abfrage vor Einbeziehung des dynamischen Listen-Filters nach 1:20 Minuten abgearbeitet, habe ich nach Einbeziehung des Listenfilters die Abfrage nach 15 Minuten abgebrochen. Da ich in der Erstellung der Abfrage keine Fehlermeldung erhalten habe und diese im Vorschau-Modus durchlief, gehe ich davon aus, dass ich die Umsetzung richtig gemacht habe. Anschließend habe ich den Weg über den InnerJoin ausprobiert, das Ergebnis lag hier nach 1:33 Minuten vor. Das war für mich vertretbar, so dass ich es bei der Join-Lösungsvariante belassen habe.

Vielleicht ist Performance ein Grund, weshalb gern die Join-Variante eingesetzt wird. Wie auch immer, der Impuls für die Lösung meines Problems kam aus deinem Post. Dafür nochmals besten Dank.

Sonnige Grüße aus Zeven
Jörg

]]>
Von: Lars Schreiber https://ssbi-blog.de/blog/business-topics/wie-du-spalten-in-power-query-dynamisch-nach-werten-filterst/#comment-931 Mon, 06 Apr 2020 19:27:07 +0000 https://ssbi-blog.de/?p=5423#comment-931 Als Antwort auf Robert.

Hallo Robert,

die einfachste Möglichkeit, dies in diesem Beispiel herzustellen ist, in Abfrage ‚dynamisches_Filtern_List_ContainsAny‘ den Schritt ‚Dynamischer_Filter_korrekt‘ mit einem >not< zu versehen: = Table.SelectRows(#"Geänderter Typ", each not List.ContainsAny(GesetzteFilter_Liste, {[Buchstabe]})). Vermutlich gibt es performantere Lösungen, aber mit dieser kleinen Umstellung kommst Du zumindest inhaltlich ans Ziel.

Viele Grüße,
Lars

]]>
Von: Robert https://ssbi-blog.de/blog/business-topics/wie-du-spalten-in-power-query-dynamisch-nach-werten-filterst/#comment-927 Sun, 05 Apr 2020 14:41:20 +0000 https://ssbi-blog.de/?p=5423#comment-927 Hallo Lars,

ich fand den Text sehr verständlich. Die Ausführung mit Text und Screenshots finde ich sowieso besser als ein Video.
Allerdings sollte man sich vorher schon mit der grundlegenden syntax von M beschäftigt haben.

Gibt es auch eine Negierung hierzu?
Zeige nur Daten deren Schlüssel nicht in der Filtertabelle vorkommt.

Gruß Robert

]]>
Von: Lars Schreiber https://ssbi-blog.de/blog/business-topics/wie-du-spalten-in-power-query-dynamisch-nach-werten-filterst/#comment-653 Mon, 30 Sep 2019 19:08:05 +0000 https://ssbi-blog.de/?p=5423#comment-653 Als Antwort auf Peter.

Hallo Peter,

vielen Dank fürs Lesen meines Blogs. Ich nehme mir stets viel Zeit, um meine Artikel so verständlich wie möglich zu schreiben und erhalte dafür viel gutes Feedback von Lesern. Schade, dass es in Ihrem Fall nicht so aussieht. Ein gutes und verständliches Video zu drehen dauert gerne mal 1,5 Tage Arbeitszeit, die ich weder aufbringen kann noch möchte. Daher muss ich hier leider enttäuschen.

Viele Grüße,
Lars

]]>