如果使用OR函数text.contain,则M查询中的条件列



我在powerquery中添加了一列,条件语句包含具有不同值的文本。我可以为每个条件添加每个短语,但我正在考虑使用OR函数以更有效的方式编写它。

到目前为止,我有以下几种:

= Table.AddColumn(#Changed Type", "Assigned Group", each if Text.Contains([Assigned to], "John") Then "Group 1" else if Text.Contains([Assigned to], "johnny") Then "Group 1" else if Text.Contains([Assigned to], "jane") Then "Group 1" else if Text.Contains([Assigned to], "sean") Then "Group 1" else if Text.Contains([Assigned to], "Mary") Then "Group 2" else if Text.Contains([Assigned to], "Pete") Then "Group 2" else "Group 3")

如前所述,有没有一种方法可以在没有上面的长文的情况下更有效地写这篇文章?

不知怎么的,我试过了:

= Table.AddColumn(#Changed Type", "Assigned Group", each if Text.Contains(OR(([Assigned to], "John"), ([Assigned to], "johnny"), ([Assigned to], "jane"), ([Assigned to], "sean"))) Then "Group 1" else if Text.Contains(OR(([Assigned to], "Mary"), ([Assigned to], "Pete"))) Then "Group 2" else "Group 3")

上面说Or不被认可。我还在文本之前尝试了OR函数。如果包含短语,它仍然不起作用。

如何输入OR函数,就像它在excel中或在权力查询中一样。

首先,请记住:M是区分大小写的语言。因此,然后不是正确的语法。PQ中也没有OR函数,但有运算符。

您可以使用以下代码:

= Table.AddColumn(
#"Changed Type",
"Assigned Group",
each 
let
fn = (list) =>
List.AnyTrue(
List.Transform(list, (x) => Text.Contains([Assigned to], x, Comparer.OrdinalIgnoreCase))
)
in
if fn({"John", "Jane", "Sean"}) then
"Group 1"
else if fn({"Mary", "Pete"}) then
"Group 2"
else
"Group 3"
)

最新更新