PQ-综合实战:根据关键词匹配查找对应内容

今天的文章有点儿长,步骤有点儿多,但这个综合操作很值得练好,以后扩展应用的空间很大。


小勤:大海,公司现在要对产品根据关键词进行分类,有位大神写了个公式,不是很复杂,但基本效果实现了:

大海:嗯。这个公式写得很巧妙啊,将lookup函数用得炉火纯青!

小勤:但这个公式有个问题,关键词分类表增加内容后,得去再调整公式,因为公式的引用范围只能是对全部分类表的绝对引用,不能引用空行进行预留扩展。

大海:这倒是。因为预留空值就都得不到正确结果了。

小勤:那怎么办呢?

大海:这种问题用Power Query比较合适,操作也不复杂,关键是能随数据一键刷新。

Step-1:以仅创建链接的方式获取关键词表数据(最后不需要上载该部分数据到工作表中)

Step-2:在关键词查询里添加自定义列(用于与待分类表做连接合并)

Step-3:获取待分类表中的数据

Step-4:对待分类表添加自定义列(用于与关键词查询做连接合并)

Step-5:用前面步骤添加的自定义字段进行合并查询

Step-6:展开合并表

展开后,关键词表的所有行都会重复到待分类表中的所有行中。

Step-7:添加自定义列,判断待分类内容是否包含关键词

输入公式:Text.Contains([物料名称],[NewColumn.关键词])

即用于判断当前行的“物料名称”中的内容是否包含“NewColumn.关键词”中的内容。

函数说明:

Text.Contains(文本参数1,文本参数2)

l  参数1:待判断内容,必须是文本格式的内容

l  参数2:是否被包含的内容,必须是文本格式的内容

即判断文本参数1是否包含文本参数2,如果包含,返回是(True),如果不包含,返回否(False)。

如:Text.Contains(“Excel到PowerBI”,”P”),返回True。

Step-8:先对物料名称升序排序,再对判断列降序排序,为删除重复项(剔除不包含关键字)做准备

通过该步骤,将相同物料名称包含所有关键词的情况排在一起,并且使得包含关键词的情况排在前面,而不包含的情况往后排。

Step-9:添加索引列,避免后续删重复行时可能出现的错位

Step-10:基于物料名称列删除重复项,即对每个物料仅保留第一行,如果该物料包含关键词,则保留了关键词行,如果没有包含关键词,也将保留一行,为后续添加“其他”类别做准备。

Step-11:添加自定义列,根据是否包含关键词的情况读取关键词信息或标识为“其他”类别
    公式:if [包含关键词] then [NewColumn.分类] else "其他"

Step-12:选择要保留的列(删除不需要的列)

Step-13:数据加载

小勤:这个步骤挺多的啊,要两表合并再展开、然后再判断删重复……

大海:对的。因为现在没有学自定义的函数部分,而且又要处理不包含关键词的情况,所以操作步骤比较多,不过这个方法的适用性其实是很强的,比如当出现一项内容中包含多个关键词的情况时,通过这种方法灵活处理也能实现。

小勤:啊?好像我刚好有个例子就是包含多个关键词的,用公式真是搞不定,下次我回头找出来你帮忙解决一下吧。

大海:好的,到时我们一起看一下。


【数据分析师的鸡汤】

从来没有来不及的年龄,

——只有不够用的时间和资本;

从来没有抓不住的机会,

——只有不满格的实力和勇气。


(0)

相关推荐