如何修改Power BI M代码
= Table.AddColumn(#"PreviousStep", "Tag", each
if Text.Contains([Column1]) = "value1" then "bingo"
else if Text.Contains([Column1]) = "value2" then "bingo"
else if Text.Contains([Column1]) = "value3" then "bingo"
else ["Some other value"])
成一行类似于SQL的代码
case when [Column1] in ("value1", "value2", "value3") then "bingo" else "Some other value" end
我不想重复else if
的行,但是以类似的方式使用它
List.Contains({'Value1', 'Value2', 'Value3'}, [Column1])
您必须使用List.Transform生成Text.Contains函数调用,然后使用List.AnyTrue检查Column1
是否包含任何文本。
= Table.AddColumn(#"PreviousStep", "Tag", each if List.AnyTrue(List.Transform({"value1", "value2", "value3"}, (s) => Text.Contains([Column1], (s)))) then "bingo" else "Some other value")
结果:
List.ContainsAny
函数let
haystack = #table({"col"}, {{"qwer"}, {"asdf"}, {"zxcv"}, {"zxwecv"}, {"other"}}),
needles = {"qwer", "zxcv"},
add = Table.AddColumn(haystack, "Tag", each if List.ContainsAny(needles, {[col]}) then "bingo" else "Some other value")
in
add
let
haystack = #table({"col"}, {{"qwer"}, {"asdf"}, {"zxcv"}, {"zxwecv"}, {"other"}}),
needles = {"we", "as"},
add = Table.AddColumn(haystack, "Tag", each if List.MatchesAny(needles, (s)=>Text.Contains([col], s)) then "bingo" else "Some other value")
in
add