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:数据加载
小勤:这个步骤挺多的啊,要两表合并再展开、然后再判断删重复……
大海:对的。因为现在没有学自定义的函数部分,而且又要处理不包含关键词的情况,所以操作步骤比较多,不过这个方法的适用性其实是很强的,比如当出现一项内容中包含多个关键词的情况时,通过这种方法灵活处理也能实现。
小勤:啊?好像我刚好有个例子就是包含多个关键词的,用公式真是搞不定,下次我回头找出来你帮忙解决一下吧。
大海:好的,到时我们一起看一下。
【数据分析师的鸡汤】
从来没有来不及的年龄,
——只有不够用的时间和资本;
从来没有抓不住的机会,
——只有不满格的实力和勇气。