多个关键词匹配查找问题,这个方法可能更优!
- 问题 -
最近,在项目上碰到一个用多个关键词去匹配从而识别出内容的归属问题,比如公司的产品,虽然有标准的型号,但是,可能在实际应用中(尤其是一些手工报表),会有简称、简写、中文名称等多种情况,这时,就可以考虑通过多个关键词来识别出该产品的标准型号。
经过简化转换,以下通过识别出标准省份为例:
- 常规解法 -
这个问题咋一看起来,感觉跟以往的关键词(一个列表)的形式有点儿不一样,实际上,经过简单转换,即可以变成原来的问题,如将列表进行逆透视:
这样,我们就得到了关键词的对照表:
当然,因为这里还有英文,所以为了避免大小写的问题,如前面文章《n个关键词,还大小写不一,咋统计?》和《再用关键词统计这个案例,把3种算法优化思路讲清楚。》里的方法,可以先转换为大写或小写,这样避免后面在进行判断过程中再频繁转换。
经过对关键词对照表的处理,我们就可以在需要进行关键词匹配的地方引用该表(为了提升效率,先对表进行缓存,相关知识可参考文章《PQ-M及函数:加Buffer缓存提升查询效率》),并通过合适的办法来获取对应的信息了。
首先,我们最常用的方法,即通过Table.SelectRows去筛选出符合条件的内容,然后取其中第1条(行)中的省份列。(相关案例可参考《这个用Power Query操作步骤太多了,还不如用VBA?》)如下所示:
- 改进解法 -
但是,我们仔细想一下,这个问题里,我们只要找到关键词里的一个就可以了,并不需要对全表进行搜素,也就是说,我们只要找到表中第一条符合条件的数据,即可返回结果,于是,方法改进如下:
即对表从头开始判断,跳过(Table.Skip)表最前面不符合条件的行,这样得到的结果表中的第一行(Table.First)即为符合条件的行(记录),从中取出省份的内容即可。
- 关于关键词 -
关于关键词的问题,前面举了大量的例子,这些例子都来自于实际工作,表面上看起来五花八门,但实际都可以转化为内容的包含判断、表或列表的操作,而且,往往一题多解,如我前面文章中有个例子《惊呆必藏!1个实际工作问题,15种解法,练好22个函数!》。
总的来说,关键还是在于对表即列表相关函数的熟悉和灵活运用。后续我会遇到相关问题时,继续与大家分享,让大家可以通过更多的案例来熟悉这些函数即应用场景。
【近期热门合集/文章】