人生没有彩排
每一天都是现场直播

PowerBI案例之成语类型转换

成语作为汉语的精华,蕴含着丰富的文化内涵和语言智慧。对成语进行分类分析不仅有助于语言学习,也能展示PowerBI在文本数据处理方面的强大能力。本篇文章将介绍如何在PowerBI中实现成语类型转换。

问题描述

根据成语的叠词情况,可以将其分成多个类型,现在为了分析成语的类型分布,需要将其转换成ABCD、AABB、ABCC等类型,请自行建模完成计算。

具体问题如下图所示:

本案例的初始数据如下:

成语
三三两两
金蝉脱壳
百里挑一
含情脉脉
背水一战
霸王别姬
满腹经纶
兵临城下
春暖花开
插翅难逃
黄道吉日
天下无双
偷天换日
两小无猜
卧虎藏龙

若需其它辅助表等,可自行创建并建模。

解题要点

本案例的解决思路为:先提取成语中的每个字形成一个表,然后去重后再拼接成一个字符串,最后依次查找成语中的每个字在去重后的字符串中的索引序号,最后再将索引序号转化为英文字母即可。

解决方案

首先,数据模型如下图所示:

然后,创建如下度量值,这里提供两种方法,区别主要在后面的索引序号转化英文字母的处理上:

成语类型1 = 
VAR CurStr = MAX('表'[成语])
VAR Str_List = SELECTCOLUMNS(GENERATESERIES(1,LEN(CurStr)),"a",MID(CurStr,[Value],1))
VAR Str_Distinct = CONCATENATEX(DISTINCT(Str_List),[a])
VAR Str_Transform = SELECTCOLUMNS(Str_List,"alpha",UNICHAR(FIND([a],Str_Distinct)+64))
RETURN
CONCATENATEX(Str_Transform,[alpha])
成语类型2 = 
VAR CurStr = MAX('表'[成语])
VAR Str_List = SELECTCOLUMNS(GENERATESERIES(1,LEN(CurStr)),"a",MID(CurStr,[Value],1))
VAR Str_Distinct = CONCATENATEX(DISTINCT(Str_List),[a])
VAR Str_Transform = SELECTCOLUMNS(Str_List,"alpha",MID("ABCD",FIND([a],Str_Distinct),1))
RETURN
CONCATENATEX(Str_Transform,[alpha])

然后创建一个矩阵,并将成语字段作为行标签,再将上面的度量值放入矩阵的值字段即可,结果如下图所示:

总结

以上方法仅供参考,若有更优雅的解决方案,欢迎留言讨论,或者加入我们的技术交流群,一起享受这种思维碰撞的快乐吧!

PBI/DAX技术交流群(QQ):344353627

赞(0) 打赏
未经允许不得转载:夕枫 » PowerBI案例之成语类型转换
订阅评论
提醒
guest
0 评论
最新
最久 最赞
内联反馈
查看所有评论

觉得文章有用的话就支持一下吧~

感谢您的打赏支持,我将持续输出有价值的内容!

支付宝扫一扫打赏

微信扫一扫打赏