分享

​掌握Power Query中的条件判断

 PowerBI星球 2024-04-22 发布于河南

条件判断是一个常见的需求,在Excel公式以及DAX中都很常用,大家都知道用IF函数,用法也非常简单,那么在PowerQuery的条件判断怎么做呢?这篇文件就来介绍一下。

对于简单的条件判断,PowerQuery甚至不用自己写函数,可以直接添加条件列来实现,比如下面这个数据。

如果要添加一列考核结果,如果科目一成绩大于等于70分为通过,否则未通过,可以直接添加条件列,在弹出的窗口中选择列名、判断条件和输出值:

然后表中就添加了一列判断的结果:

是不是非常简单。

添加条件列以后,可以在编辑栏中看到自动生成的M公式:

这就是M中的if函数,它的语法如下:

if 判断条件
then 条件为真的值
else  条件为假的值

注意if、then、else必须全部是小写字母,并且M中的if不像Excel或者DAX,if 后面是不需要用括号的。

上面的例子,也可以直接添加自定义列,输入:

if  [科目一] >= 70 
then "通过" 
else "未通过"

结果也是相同的。

如果是复杂的条件判断,无法通过条件列实现的,直接通过自定义列,按照if then else的语法写公式即可。

对于多重判断,Excel和DAX的IF可以嵌套,M中的if也同样可以。

比如对上面的科目一成绩进行分类,大于等于90的为“优秀”、大于等于75的为“良好”、大于等于60的为及格,否则为“不及格”,用if添加自定义列可以这样写:

if [科目一] >= 90 
then "优秀" 
  else if [科目一] >= 75 
  then "良好" 
   else if [科目一] >= 60 
     then "及格" 
      else "不及格"

多重判断嵌套多个else if 语句就可以了,当然你也可以直接通过添加条件列,用多个子句来实现:

通过界面操作后,在编辑栏同样可以看到与上面自定义列一样的公式,他们的结果也是相同的:

如果是多个判断条件的集合,可以用 and/or 来连接多个条件。

假如还有个科目二,需要进行的判断逻辑是:科目一和科目二都大于等于90的为优秀、二科成绩之和大于等于140的为良好,否则未通过,这种就无法直接通过添加条件列来实现,而要用自定义列:

if [科目一]>=90 and [科目二] >=90
then "优秀"
  else if [科目一]+[科目二]>=140 
  then "良好"
  else "未通过"

对于非空数据的判断,还可以用??来简化多重条件的判断,之前曾经介绍过:

Power BI如何找出第一个非空数据?这两个技巧很实用

以上就是PowerQuery中if的基本用法,如果是嵌套较多的判断,写DAX公式会更加简洁,因为DAX中一个非常好用、但是PQ M中没有的函数:SWITCH,关于它的用法请参考:

掌握SWITCH函数的秘诀:一篇文章就够了 


    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多