2016-07-25 14 views
0

Mit der Antwort auf dieser Seite How to search multiple strings in a string? ich die folgende Abfrage schreiben verwaltet -Strom Abfrage wählen Datensätze von mehreren Strings oder durch eine Zeichenfolge in einem anderen Feld

let 

Source = Csv.Document(File.Contents("P:\DMWORK\all_donations_for_last_10_years.txt"),[Delimiter=" ", Encoding=1252]), 

#"Promoted Headers" = Table.PromoteHeaders(Source), 

#"Defined Table" = Table.TransformColumnTypes(#"Promoted Headers", 
{{"Donation Date", type date}, {"Amount", type number}, {"Company", type text}, {"Extra Codes", type text}}), 

Text.ContainsAny = (string as text, list as list) as logical => 
    List.AnyTrue(List.Transform(list, (substring) => Text.Contains(string, substring))), 

FirstFilter = Table.SelectRows(#"Defined Table", each Text.ContainsAny([Company], {"Assoc","Band","Baseball"})), 

SecondFilter = Table.SelectRows(#"Defined Table", each [Extra Codes] = "FUNDRAIS"), 

FinalResult = FirstFilter or SecondFilter 

in 

FinalResult 

Also, was ich versuche, zu tun ist, Wählen SieRows, die entweder dem FirstFilter ODER dem SecondFilter entsprechen. Aber es gibt mir einen "Expression.Error: Der Wert ist keine Einzelzeichenfolge. Details: Wert =" Fehler.

Wenn jemand mich in die richtige Richtung bringen könnte, um dies zu lösen, würde ich es wirklich schätzen.

Vielen Dank im Voraus.

Antwort

1

Ich würde dies mit dem geheimen "oder" Operator vereinfachen. Ich bin nicht sarkastisch - es ist tatsächlich so geheim wie in ihrer Dokumentation völlig verdunkelt. Versuchen Sie, es wird gesucht ...

Auf jeden Fall würde ich den Code aus FirstFilter ersetzen unten mit so etwas wie:

Filter = Table.SelectRows(#"Defined Table", each Text.ContainsAny([Company], {"Assoc","Band","Baseball"}) or [Extra Codes] = "FUNDRAIS"), 

in 

Filter 
+0

Mike, das funktioniert - danke! –