Power BI 市场组件为我们提供了丰富的可视化效果,大家也可以在一些网站上,自定义一些组件效果。同时,DAX这一款强大的语言,适用于Excel、PowerQuery和Power BI,如果大家能把这个DAX用得炉火纯青的话,那应该可以玩转Power BI的一半功能了(另外一半就是:M语言)。
本文讲解如何利用DAX实现,利用星形给电影打分。直接上最后的效果:
具体实现方法主要是利用DAX中的两个函数,REPT 和UNICHAR函数。一步一步来分析吧~
1.数据源
FilmName | Score |
肖申克的救赎 | 9.6 |
我不是药神 | 9 |
让子弹飞 | 8.7 |
那些年,我们一起追的女孩 | 8.1 |
芳华 | 7.6 |
西虹市首富 | 6.5 |
傲娇与偏见 | 4.8 |
特殊身份 | 4 |
李雷和韩梅梅 | 3.6 |
爱情公寓 | 3.1 |
表名:Film。列:电影名称列,以及对应的评分列。
2.度量值
- 评分度量值
评分 = AVERAGE(Film[Score])
先创建分数的度量值,此处用平均(AVERAGE)、和(SUM)、最大值(MAX)、最小值(MIN)均可,因为根据上下文筛选,一项只有一个评分,所以选取哪个函数,影响不大。如果最后需要展示汇总数据的话,就会有影响。
- 星形逻辑度量值
Stars = REPT(UNICHAR(9733),INT([评分])) &
REPT(UNICHAR(10026),INT(([评分]-INT([评分]))/0.5))
REPT函数(DAX):将文本重复给定重复次数。原文档链接:https://docs.microsoft.com/zh-cn/dax/rept-function-dax
【语法】 REPT(<text>, <num_times>)
【解释】第一个参数就是你要重复的文本,在本文中就是星星;第二个参数就是重复多少次,比如我有9分,那么这个星星就要重复9次。
UNICHAR函数(DAX):返回给定数值引用的Unicode字符。原文档链接:https://docs.microsoft.com/zh-cn/dax/unichar-function-dax
【语法】UNICHAR(number)
【解释】一个数字对应一个UNICODE字符,你给UNICHAR投食一个数字,它就会产生一个对应的字符。本文中,星星对应的数字是9733,半颗星对应的数字是10026。其他UNICODE和HTML的转化,可上链接:https://unicode-table.com/cn/
因吹斯汀~
INT函数(DAX):这个比较简单,向下取整,比如INT(3.1) = 3,INT(3.5) = 3。
本文的评分逻辑是:整数部分就是整颗星的个数,小数部分视情况而定:小于5时,就不算半颗星;大于等于5时,算半颗星。比如《让子弹飞》的评分是8.7,那么效果就是:有8颗实心星,和一个半颗星。
DAX千千万,大家边走边学边看,学了九成才一半,一个字:加油干!
skrskr
评分来自豆瓣。