Sehr schönes Video. Vielen Dank! Super erklärt. Finde es klasse, wie du komplizierte M Sprache userfriendly rüberbringst. Ich habe zuletzt die Erfahrung gemacht, dass das Filtern über Listen bei größeren Datensätzen zu Performanceeinbußen führte. Da konnte ich es über Joins performanter lösen. Wollte aber mal ausprobieren, ob ein Einfügen von List.Buffer hinter List.Contains zu einer Verbesserung führt. Die genauen Anwendungsszenarien der Buffer Funktionen erschließen sich mir überhaupt noch nicht :D
Hallo Lars, deine Videos sind 1:1 in der Praxis anwendbar. Vielen Dank für diese tollen Videos. Zu diesem habe ich jedoch eine Frage. In der Minute 5:50 erstellst du eine Liste in der bestehenden Abfrage, um danach zu filtern. Meine Frage an dich ist : Kannst du mir sagen, wie ich eine Liste basierend einer separaten Abfrage erstellen kann, um Sie dann als Filter zu nutzen, so wie du mit den 3 Farben. Das bedeutet, ich habe in der Excel Datei eine Tabelle mit Farben und in Power Query erstelle ich eine Abfrage auf diese Tabelle. Jetzt möchte ich meine Haupttabelle Filtern, nach den Farben dieser Abfrage. Leider habe ich es selbst nicht hinbekommen. Soweit ich verstanden habe, müsste ich meine Abfrage auf die Tbelle in eine Liste umwandeln und diese Liste dann im Filter ansprechen. Aber wie? Über deine Unterstützung würde ich mich sehr freuen.
Hi Sabrina, um eine Spalte einer Tabelle in eine Liste zu verwandeln, reicht es, diese Spalte zu referenzieren. Das bedeutet, Du gehst in die Abfrage, in welcher sich die Spalte befindet, die eine Liste werden soll, schaust Dir die Definition des letzten Steps/ Schrittes in der Bearbeitungsleiste an und - wir nehmen an, Deine Spalte heißt "Farbe" - setzt ans Ende des M-Codes, den Du in der Bearbeitungsleiste siehst [Farbe] Danach sollte sich diese Spalte als Liste darstellen... Ich hoffe, das ist verständlich und hilft Dir. Liebe Grüße, Lars
Wow - Du bist echt schnell :) Das hat schonmal geklappt.Ich habe eine Tabelle die aus einer Spalte besteht in eine Liste umgewandelt. Jetzt möchte dise Liste benutzten, um die Haupttabelle zu filtern. Da ich auch faul bin, habe ich wie du am Ende den Schritt gemacht und einen Filter gesetzt (blau ausgeschlossen). Diesen M-Code in der Bearbeitungsleiste versucht anzupassen.Wie folgt : Table.SelectRows(#"letzter Schritt", each List.Contains( rausfarbe, [Farbe])) - Aber das macht er nicht. Weil vermutlich die Liste, nach der ich selektieren möchte, in einer anderen Abfrage sich befindet, oder? PS: [Farbe] ist die Spalte in der Haupttabelle, die ich filtern möchte und rausfarbe ist der Name des letzten Schrittes (wo ich refernziert habe, damit die TAbelle zur einer Liste wird. @@LarsSchreiber
@@Sabrina-kq6en Damit, dass sich die Liste in einer anderen Abfrage befindet, hat das nichts zu tun. Ich kann nur leider per Ferndiagnose nicht feststellen woran es liegt. Deine Liste heißt farbenRAUS?! Du willst diese Farben also nicht sehen?! Dann funktioniert List.Contains nicht, denn damit würden nur die Farben angezeigt, die sich auch in der Liste befinden, aber Du willst das umgekehrt haben, oder?! Dann muss vor das List.Contains noch ein not als Negation. Vielleicht hilft das?
Ich weiss, dass per Ferndiagnose es schwierig ist. Lass mich versuchen es nochmal zu erklären (sorry vorab, wenn ich das nicht so gut hinbekomme) Also: Ich habe eine Haupttabelle (die selbe wie in deinem Video) - Jetzt kommt der Unterschied: Ich habe eine zweite kleine Tabelle erstellt. Sie besteht aus 1 Spalte "OUT" - In der Spalte "OUT" befinden sich 2 Datensätze ("gelb" und "rot") - Ich habe beide Tabellen über eine Abfrage in Power Query. Ich möchte jetzt die Haupttabelle filtern, sodass die Datensätze mit den Farben "gelb" und "rot"" nicht mehr angezeigt werden. ----- Im ersten Schritt habe ich meine kleine Tabelle "OUT" in eine Liste umgewandelt - Den SCHRITT , in der ich den M-Code nach deiner Beschreibung angepasst habe, habe ich auf "rausfarbe" umbenannt. So heisst also der letzte Schritt. Die Liste selbst heißt "OUT". Und jetzt meine Frage, wie muss der M-Code meiner Haupttabelle im letzten Schritt sein, damit die Filterung funktoniert ? Die Liste befindet sich nicht in den Schritten innerhalbs der Haupttabelle ( bei dir hast du die liste selbst erstellt und befindet sich paar Schritte vorher). Ich habe die liste nicht erstellt. Sondern habe die kleine TAbelle zur Liste umgewandelt. Diese Liste soll jetzt genutzt werden. bei mir befindet sich die Liste "ausserhalb". Weisst du wie ich das meine? @@LarsSchreiber
PS: Der Grund, weshalb ich so dringend deine Hilfe brauche ist der, dass ich auf der Arbeit eine Tabelle mit über 100.000 Kundennummern habe. Und ich soll ausgeschiedene Kunden aus der Liste entfernen. es scheiden am TAg über 80 -150 Kunden aus. Ich muss diese Kunden alle manuell entfernen indem ich die Kontrollkästchen betätige. Aber wenn das jetzt lösen, dann kann ich eine Tabelle erstellen und die ausgeschiedene kunden einfach da rein setzten. @LarsSchreiber
Hallo Lars, vielen Dank für das Video! Gerade für mich als Anfänger in diesem Bereich ist das sehr lehrreich. Wenn ich es aber richtig verstanden habe, dann müsste im Bereich filtern als Negativliste auch diese Zeilen ausfiltern, wenn die definierte Liste nur Teil der Referenzspalte ist. In Deinem Farbenbeispiel würde ich erwarten, wenn ich schwarz als Teil der Liste definiert habe, dann würde die Zeile die in der Referenzspalte schwarz stehen hat, verschwinden. Ich würde aber erwarten, dass auch die Zeile verschwindet, wo schwarz grau steht. Das ist aber nicht der Fall. Was mach ich falsch? Mein Code sagt auf mich angewendet = Table.SelectRows(Custom4, each not List.Contains(ListeVonAusschlussReferenceKeys,[Reference])). Zur Not, um weiterzumachen, kann ich erst mal mit dem Händischen Filtern von Textfilter does not contain weitermachen, denn da funktioniert es... Ich bin verwirrt, kannst Du liebenswürderweise helfen? Vielen Dank!!!!
Hallo Reinhard, die von mir gezeigte Lösung sucht nach einem EXAKTEN Treffer. Es ist also keine Volltextsuche, im Gegensatz zu der von Dir beschriebenen Lösung über die Nutzeroberfläche. Für die von Dir gewünschte Lösung benötigst Du folgenden Code, der jedoch nicht einfach in diesem Kommentar erklärt werden kann... ich hoffe, er hilft Dir dennoch weiter: = Table.SelectRows( Benutzerdefiniert2, each not List.Contains( List.Transform(ListeVonFarben, (r)=> Text.Contains([Farbe], r) ), true ) = true). Liebe Grüße aus Hamburg, Lars
Hallo Lars, danke für das hilfreiche Video, aber beim Thema Filter über Listen ab Minute 4:35 hätte ich eine weitere Frage. Wenn in meiner Liste nicht steht "blau", "schwarz" sonder nur "au", "warz" und trotzdem alles ausgegeben werden soll, wo die "au" und "warz" enthalten sind. Wie komme hier weiter? vielen Dank vorab! falls du mir eine Lösung zeigen kann. viele Grüße, Arno
Hallo Arno, die Suche nach Substrings benötigt nochmal eine andere Herangehensweise. Ich muss mal sehen, wann ich es schaffe, dazu auch ein Video zu machen.
Eine tolle Übersicht der Funktionen zur Filterung in PQ hast Du da erstellt. Vor allem der inner join und die Funktionsverschachtelung aus dem letzten Abschnitt in PQ ist sehr mächtig. Wie kann man Filterungen analog regex vornehmen? Bspw. like 'I6[0134].[01]%'
Hi Frank. Danke Dir :-) Power Query verfügt nicht über regex-Funktionalitäten. Allerdings kann man bei den Suchkriterien immer mit Text.StartsWith(), Text.EndsWith() etc. arbeiten, um dem wenigstens etwas näher zu kommen. Falls Du in das Thema tiefer rein musst/ willst, kann Dir dieser Artikel vielleicht helfen: www.thebiccountant.com/2018/04/25/regex-in-power-bi-and-power-query-in-excel-with-java-script/ LG, Lars
Unglaublich wie gut Lars das didaktisch immer aufbaut…spannend wie ein Krimi 😊
😂😇 Vielen Dank, Bernd. Ich musste wirklich laut lachen. Es freut mich sehr.
Klasse Video, sehr hilfreich!
Finde es nicht schlimm wenn ein Video mal 30 Minuten geht, statt 10 -15 Minuten.
Vielen Dank für das praktische Video mit Beispielen, die man gut nachvollziehen kann.
Sehr gerne!
Wieder ganz großes Kino. Danke fürs zeigen.
Hallo Lars, spitze Erläuterung! Welches Tool verwendest du, um auf der Oberfläche zu zeigen (rotes "+" bz markieren)
Ich nutze ZoomIt... learn.microsoft.com/en-us/sysinternals/downloads/zoomit
Sehr schönes Video. Vielen Dank! Super erklärt. Finde es klasse, wie du komplizierte M Sprache userfriendly rüberbringst. Ich habe zuletzt die Erfahrung gemacht, dass das Filtern über Listen bei größeren Datensätzen zu Performanceeinbußen führte. Da konnte ich es über Joins performanter lösen. Wollte aber mal ausprobieren, ob ein Einfügen von List.Buffer hinter List.Contains zu einer Verbesserung führt. Die genauen Anwendungsszenarien der Buffer Funktionen erschließen sich mir überhaupt noch nicht :D
Hallo Lars, deine Videos sind 1:1 in der Praxis anwendbar. Vielen Dank für diese tollen Videos. Zu diesem habe ich jedoch eine Frage. In der Minute 5:50 erstellst du eine Liste in der bestehenden Abfrage, um danach zu filtern. Meine Frage an dich ist : Kannst du mir sagen, wie ich eine Liste basierend einer separaten Abfrage erstellen kann, um Sie dann als Filter zu nutzen, so wie du mit den 3 Farben. Das bedeutet, ich habe in der Excel Datei eine Tabelle mit Farben und in Power Query erstelle ich eine Abfrage auf diese Tabelle. Jetzt möchte ich meine Haupttabelle Filtern, nach den Farben dieser Abfrage. Leider habe ich es selbst nicht hinbekommen. Soweit ich verstanden habe, müsste ich meine Abfrage auf die Tbelle in eine Liste umwandeln und diese Liste dann im Filter ansprechen. Aber wie? Über deine Unterstützung würde ich mich sehr freuen.
Hi Sabrina, um eine Spalte einer Tabelle in eine Liste zu verwandeln, reicht es, diese Spalte zu referenzieren. Das bedeutet, Du gehst in die Abfrage, in welcher sich die Spalte befindet, die eine Liste werden soll, schaust Dir die Definition des letzten Steps/ Schrittes in der Bearbeitungsleiste an und - wir nehmen an, Deine Spalte heißt "Farbe" - setzt ans Ende des M-Codes, den Du in der Bearbeitungsleiste siehst [Farbe] Danach sollte sich diese Spalte als Liste darstellen... Ich hoffe, das ist verständlich und hilft Dir. Liebe Grüße, Lars
Wow - Du bist echt schnell :) Das hat schonmal geklappt.Ich habe eine Tabelle die aus einer Spalte besteht in eine Liste umgewandelt. Jetzt möchte dise Liste benutzten, um die Haupttabelle zu filtern. Da ich auch faul bin, habe ich wie du am Ende den Schritt gemacht und einen Filter gesetzt (blau ausgeschlossen). Diesen M-Code in der Bearbeitungsleiste versucht anzupassen.Wie folgt : Table.SelectRows(#"letzter Schritt", each List.Contains( rausfarbe, [Farbe])) - Aber das macht er nicht. Weil vermutlich die Liste, nach der ich selektieren möchte, in einer anderen Abfrage sich befindet, oder? PS: [Farbe] ist die Spalte in der Haupttabelle, die ich filtern möchte und rausfarbe ist der Name des letzten Schrittes (wo ich refernziert habe, damit die TAbelle zur einer Liste wird. @@LarsSchreiber
@@Sabrina-kq6en Damit, dass sich die Liste in einer anderen Abfrage befindet, hat das nichts zu tun. Ich kann nur leider per Ferndiagnose nicht feststellen woran es liegt. Deine Liste heißt farbenRAUS?! Du willst diese Farben also nicht sehen?! Dann funktioniert List.Contains nicht, denn damit würden nur die Farben angezeigt, die sich auch in der Liste befinden, aber Du willst das umgekehrt haben, oder?! Dann muss vor das List.Contains noch ein not als Negation. Vielleicht hilft das?
Ich weiss, dass per Ferndiagnose es schwierig ist. Lass mich versuchen es nochmal zu erklären (sorry vorab, wenn ich das nicht so gut hinbekomme) Also: Ich habe eine Haupttabelle (die selbe wie in deinem Video) - Jetzt kommt der Unterschied: Ich habe eine zweite kleine Tabelle erstellt. Sie besteht aus 1 Spalte "OUT" - In der Spalte "OUT" befinden sich 2 Datensätze ("gelb" und "rot") - Ich habe beide Tabellen über eine Abfrage in Power Query. Ich möchte jetzt die Haupttabelle filtern, sodass die Datensätze mit den Farben "gelb" und "rot"" nicht mehr angezeigt werden. ----- Im ersten Schritt habe ich meine kleine Tabelle "OUT" in eine Liste umgewandelt - Den SCHRITT , in der ich den M-Code nach deiner Beschreibung angepasst habe, habe ich auf "rausfarbe" umbenannt. So heisst also der letzte Schritt. Die Liste selbst heißt "OUT". Und jetzt meine Frage, wie muss der M-Code meiner Haupttabelle im letzten Schritt sein, damit die Filterung funktoniert ? Die Liste befindet sich nicht in den Schritten innerhalbs der Haupttabelle ( bei dir hast du die liste selbst erstellt und befindet sich paar Schritte vorher). Ich habe die liste nicht erstellt. Sondern habe die kleine TAbelle zur Liste umgewandelt. Diese Liste soll jetzt genutzt werden. bei mir befindet sich die Liste "ausserhalb". Weisst du wie ich das meine? @@LarsSchreiber
PS: Der Grund, weshalb ich so dringend deine Hilfe brauche ist der, dass ich auf der Arbeit eine Tabelle mit über 100.000 Kundennummern habe. Und ich soll ausgeschiedene Kunden aus der Liste entfernen. es scheiden am TAg über 80 -150 Kunden aus. Ich muss diese Kunden alle manuell entfernen indem ich die Kontrollkästchen betätige. Aber wenn das jetzt lösen, dann kann ich eine Tabelle erstellen und die ausgeschiedene kunden einfach da rein setzten. @LarsSchreiber
Top - Ich sehe schon: Ich befinde mich noch sehr am Anfang meiner PQ-Kenntnisse
Abo haste ja schon - gibt noch viel zu gucken bei DIr
Klasse 👍
Ein ❤-liches Dankeschön aus Bayern. Vor allem die letzte Möglichkeit mit der Generierung der Liste war mir nicht klar.
Gern geschehen 😊
Hallo Lars, vielen Dank für das Video! Gerade für mich als Anfänger in diesem Bereich ist das sehr lehrreich. Wenn ich es aber richtig verstanden habe, dann müsste im Bereich filtern als Negativliste auch diese Zeilen ausfiltern, wenn die definierte Liste nur Teil der Referenzspalte ist. In Deinem Farbenbeispiel würde ich erwarten, wenn ich schwarz als Teil der Liste definiert habe, dann würde die Zeile die in der Referenzspalte schwarz stehen hat, verschwinden. Ich würde aber erwarten, dass auch die Zeile verschwindet, wo schwarz grau steht. Das ist aber nicht der Fall. Was mach ich falsch? Mein Code sagt auf mich angewendet = Table.SelectRows(Custom4, each not List.Contains(ListeVonAusschlussReferenceKeys,[Reference])). Zur Not, um weiterzumachen, kann ich erst mal mit dem Händischen Filtern von Textfilter does not contain weitermachen, denn da funktioniert es...
Ich bin verwirrt, kannst Du liebenswürderweise helfen?
Vielen Dank!!!!
Hallo Reinhard,
die von mir gezeigte Lösung sucht nach einem EXAKTEN Treffer. Es ist also keine Volltextsuche, im Gegensatz zu der von Dir beschriebenen Lösung über die Nutzeroberfläche. Für die von Dir gewünschte Lösung benötigst Du folgenden Code, der jedoch nicht einfach in diesem Kommentar erklärt werden kann... ich hoffe, er hilft Dir dennoch weiter: = Table.SelectRows( Benutzerdefiniert2, each not List.Contains( List.Transform(ListeVonFarben, (r)=> Text.Contains([Farbe], r) ), true ) = true).
Liebe Grüße aus Hamburg,
Lars
Hallo Lars,
danke für das hilfreiche Video, aber beim Thema Filter über Listen ab Minute 4:35 hätte ich eine weitere Frage.
Wenn in meiner Liste nicht steht "blau", "schwarz" sonder nur "au", "warz" und trotzdem alles ausgegeben werden soll, wo die "au" und "warz" enthalten sind.
Wie komme hier weiter?
vielen Dank vorab! falls du mir eine Lösung zeigen kann.
viele Grüße,
Arno
Hallo Arno, die Suche nach Substrings benötigt nochmal eine andere Herangehensweise. Ich muss mal sehen, wann ich es schaffe, dazu auch ein Video zu machen.
Mega cool. Wo gibt es Schulungen bei dir?
Vielen Dank, Marcel. Schulungen gibt es hier: ssbi-blog.de/power-bi-schulungen/
Eine tolle Übersicht der Funktionen zur Filterung in PQ hast Du da erstellt. Vor allem der inner join und die Funktionsverschachtelung aus dem letzten Abschnitt in PQ ist sehr mächtig.
Wie kann man Filterungen analog regex vornehmen? Bspw. like 'I6[0134].[01]%'
Hi Frank. Danke Dir :-) Power Query verfügt nicht über regex-Funktionalitäten. Allerdings kann man bei den Suchkriterien immer mit Text.StartsWith(), Text.EndsWith() etc. arbeiten, um dem wenigstens etwas näher zu kommen. Falls Du in das Thema tiefer rein musst/ willst, kann Dir dieser Artikel vielleicht helfen: www.thebiccountant.com/2018/04/25/regex-in-power-bi-and-power-query-in-excel-with-java-script/
LG,
Lars