【问题标题】:conditional column in M query if text.contain using OR function如果 text.contain 使用 OR 函数,则 M 查询中的条件列
【发布时间】:2021-03-16 20:07:10
【问题描述】:

我在 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 未被识别。我还在 text.contains 短语之前尝试了 OR 函数,但它仍然不起作用。

我如何像在 excel 或 power query 中一样输入 OR 函数。

【问题讨论】:

    标签: if-statement powerbi powerquery


    【解决方案1】:

    首先,请记住:M 是区分大小写的语言。因此,Then 不是正确的语法。 PQ中也没有OR函数,但是有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"
      )
    

    【讨论】:

    • 感谢您提醒我注意区分大小写,我只是通过键入从另一台计算机复制了整个代码,并没有意识到区分大小写。我会试一试代码并让你知道。保持安全并保持健康
    • 谢谢你,这行得通,只需要清理数据以使其更准确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    • 2011-03-18
    • 2013-01-11
    • 1970-01-01
    • 2015-11-13
    相关资源
    最近更新 更多