问题描述
在使用Power BI Desktop做报表,用到了其中一个图标组件 (Card Browser),可以做出比较漂亮的图片和带颜色的卡片效果:
但是,在自己的数据源中,并没有颜色值。所以颜色值为0-255的十进制转换为00-FF的十六进制数据,想到了生成随机数,然后转换为颜色值。
数据源格式示例:
Title Count Index Excel 1 1 Handyman 1 2 Photoshop 1 3 Racquetball 1 4 主机游戏 1 5 乐器 1 6 ... ...
没有颜色值时的效果:
需要使用到的Power BI 默认函数:
- Number.RandomBetween: 返回指定的两个数值之间的一个随机数, 详细介绍:https://learn.microsoft.com/zh-cn/powerquery-m/number-randombetween
- Number.ToText :根据
format
指定的格式,将数值number
转换为文本值, "X" 表示将数字转换为十六进制数的字符串。详细介绍:https://learn.microsoft.com/zh-cn/powerquery-m/number-totext
实现步骤
第一步:添加一个新字段 CardColor
==>> 在Table 数据区域 点击 右键 , 选择 Edit Query, 最后点击 Custom Column。
第二步:使用 Number.RandomBetween 生成随机数,并组合Number.ToText ,转换为十六进制
"#" & Number.ToText(Number.Round(Number.RandomBetween(1000001,9999999),0),"X")
- “#“ 颜色值字符
- & 在Power BI Query 中用来连接前后字符串
- Number.Round : 为了去掉 随机数中默认产生的两位小数
效果如下:
第三步:把颜色值加入Card Browser中,查看修改后的效果
示例文件下载地址:https://files.cnblogs.com/files/lulight/Hobby.zip?t=1712840780&download=true
参考资料:
添加索引列:https://learn.microsoft.com/zh-cn/power-query/add-index-column
Number.RandomBetween:https://learn.microsoft.com/zh-cn/powerquery-m/number-randombetween
Number.Round: https://learn.microsoft.com/zh-cn/powerquery-m/number-round
Number.ToText :https://learn.microsoft.com/zh-cn/powerquery-m/number-totext
[END]