在DAX中有个IN运算符非常好用,之前介绍过它的用法,参考
一文掌握Power BI中的IN运算符
有很多人问如何在PowerQuery中使用IN,其实PowerQuery中并没有这个运算符,不过也有相应的函数可以实现类似的功能。
本文以筛选下面这个表格为例来介绍一下在PowerQuery中是如何实现的。

假如需要筛选客户名称是"吴雷"、"孙静"、"林永"的数据,最简便的做法,可以直接使用筛选功能。

但是当需要筛选的数据比较多时,这样手动一个个勾选也不方便,那么还可以利用M函数实现。
需要插入一个步骤(右键最后一个步骤,点击“插入步骤后”):

然后在上面编辑栏输入:
= Table.SelectRows(
更改的类型,
each List.Contains({"吴雷","孙静","林永"},[客户])
)

这样就可以不再手动勾选,而是利用M实现筛选,其中用到的M函数是List.Contains,用来判断某个值(第2个参数)是否在列表中(第1个参数),如果在,返回true,然后通过 Table.SelectRows来返回对应的行。
上面的做法虽然可以实现,但是如果筛选的名称很多,都这样一个个列出来组成列表依然不够灵活。
对于这种情况,更常见的是有个筛选的条件表,把这个条件表导入进来:

对于这个表,先将它变成一个list列表,右键该列,点击“深化”:

然后就变成了下面这样的列表(list),这个列表的名称命名为“条件表”,

有了这个条件表,可以直接更改上面的M函数:
= Table.SelectRows(
更改的类型,
each List.Contains(条件表,[客户])
)
同样可以实现筛选的需求。

之后如果筛选范围有改动,只需要更改条件表就可以了。
以上List.Contains的做法,是不是和IN类似呢?
如果是用DAX来实现上述需求,可以直接这样来做,新建表:
表 = FILTER('示例表', '示例表'[客户] IN '条件表' )

更多干货
「PowerBI星球」内容合集(2022版)