Power BI之DAX神功番外篇:第3回 使用通配符进行模糊查询
今天有一个小伙伴问我,怎么使用通配符模糊查询。
《孙兴华讲PowerBI火力全开》笔记20 我们讲了文本函数,我在课程中告诉大家,DAX中的文本函数你可以不用,但是要会。
是不是被个别弹幕、评论影响了?我经常会看到有人来我这里学习DAX、M函数时,他们会说这件事工作表函数就能做。
我小时候四年级才开始学英语(你们可能是一年级学的),我记得二年级时,看到表哥的本子上写的英语单词我一个都不认识,我也怀疑过他写错了,我说你还中学生呢,汉语拼音都写不对。到了四年级我明白了,当学习一个新知识的时候,需要从零开始,而不能通过以前的成就看不起新知识的底层。
一、不区分大小写模糊查询

如果我想通过度量值筛选学校是“三里屯二小”的分数:
筛选器:'Sheet1'[学校]="三里屯二小" , 筛选那些筛选器返回True的结果
如果我想通过度量值筛选学校包含“三里屯”的分数:
详见《孙兴华讲PowerBI火力全开》笔记20.4 SEARCH【不区分大小写,可用通配符】
我们先通过新建列的方式进行测试:
返回结果:

0是False, 其它任何数字都是True,Blank()在这里就是0,当然你也可以写成下面的样子
那这个表我们怎么去筛选它呢?万能的filter吧?
返回结果:

新建列和新建表只是测试,实际使用中,你无需这样的操作。
Filter得到的这张表就是筛选条件,于是我们将度量值公式写成:
二、不区分大小写模糊查询(使用通配符)
?号代表一个字符,*代表零个或多个字符
如果要查找的字符是?或*号本身,需要在?或*前面加一个~转义字符
这些知识在2020.12.17日的《孙兴华讲PowerBI火力全开》中就讲过了

如果我们要查询孙和华中间还有一个字的学校分数:使用?号,问号代表1个字符
如果想查找孙和华之间两个字符,就使用"孙??华" 切记:?要在英文状态下输入
如果包含孙兴华和孙星星华都想要,就用"孙*华"
Ps: 多条件怎么办? filter里面可以添加与或非关系

还有没有高级一点的方法?有!但是你需要看过《DAX神功》的前两卷才能理解。
我们以上面的案例来讲,想找到包含孙兴华和xyz
《DAX神功》第1卷第3回 表构造函数
返回结果:

《DAX神功》第1卷第14回 讲到 var x=SELECTEDVALUE('表名'[列名]) 指当前行
我们要将新建表Value列每一行的值进行查找
但是在矩阵或表上你要使用新建表的Value字段分组:

三、区分大小写请使用FIND【不能使用通配符】
详见《孙兴华讲PowerBI火力全开》笔记20.3

例如,我需要学校包含ABC的大学分数,结果返回1
如果我需要包含Abc这样,大写A开头小写c结尾(指的不是这个字符串由A开头c结尾)。你试试一下,Excel里面的Ctrl+F也不行。如果哪位小伙伴有好的方法可以发到评论区。

《孙兴华讲PowerBI火力全开》PowerBI必学课程
https://www.bilibili.com/video/BV1qa4y1H7wp
《DAX神功》文字版合集:
https://www.bilibili.com/read/readlist/rl442274
《DAX神功》视频版合集:
https://www.bilibili.com/video/BV1YE411E7p3
PowerBI(DAX函数)、PowerQuery(M函数)、Python办公自动化、Python爬虫、Python数据分析、ExcelVBA、WordVBA、AccessVBA、MySQL等等