Power BI 基于门店位置的产品销售排行
2023-02-18 16:27:26 时间
上一文(Power BI x EasyShu:Top商品门店分布地图可视化)分享的是每个产品在不同门店的状况,本文换一种角度:每个门店自己的状况。下图展示了每个门店最畅销的商品,部分门店的Top1因为存在并列关系,所以显示了不止一个产品。
我们可以基于这样的展示结果去分析背后的原因,以期后续做出改善。大部分门店产品A畅销,赛格店产品B畅销,是客户需求的差异导致,还是库存配置导致,或者是陈列位置导致?差异会不会是机会点?
除了全局对比,也可局部对比,东区各门店Top5有什么不同?
使用的数据如下:
这个效果依然使用一个度量值生成:
地图_Top=
VAR Top_N = 1
VAR FontSize = 20
VAR image_width = 50
VAR t =
ADDCOLUMNS (
GENERATE ( '商场资料', '产品资料' ),
"随机数",
[销量]
+ RANDBETWEEN ( 1, 10000 ) / 100000000
)
VAR t_Rank =
ADDCOLUMNS (
t,
"排名", RANKX ( FILTER ( t, [商场] = EARLIER ( [商场] ) ), [销量] ),
"索引", RANKX ( FILTER ( t, [商场] = EARLIER ( [商场] ) ), [随机数] )
)
VAR t_TopN =
FILTER ( t_Rank, [排名] <= Top_N )
VAR Title =
CONCATENATEX (
'商场资料',
"<text x='" & [X] & "' y='" & [Y] + image_width * 0.5 & "' text-anchor='end' dominant-baseline='middle' font-size='" & FontSize & "' fill='black' font-weight='bold'>" & [商场] & "</text>"
)
VAR imagemap =
CONCATENATEX (
t_TopN,
"<image xlink:href='" & [图片] & "' x='"
& [X] + IF ( ISEVEN ( [索引] ), image_width, 0 ) & "' y='"
& [Y]
+ (
ROUNDUP ( [索引] / 2, 0 ) - 1
) * image_width & "' width='" & image_width & "' height='" & image_width & "'></image>"
)
& CONCATENATEX (
t_TopN,
"<text x='"
& [X] + IF ( ISEVEN ( [索引] ), image_width, 0 ) & "' y='"
& [Y]
+ ( ROUNDUP ( [索引] / 2, 0 ) ) * image_width & "' text-anchor='start' font-size='" & FontSize * 0.6 & "' fill='black' >" & [产品ID] & "</text>"
)
//微信公众号、知乎、B站:wujunmin
RETURN
"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1251 631'>
<image xlink:href='" & [BASE64地图] & "' x='0' y='0' width='1251' height='631'></image>" & imagemap & Title & "</SVG>"
实现的思路是:
GENERATE生成一个笛卡尔积表,为表格增加按销量的排名列,并增加一个按销量的随机数索引。索引作为后续产品图片的排序依据,因为销量排名有并列的可能性,为使产品图片错位显示,需要一个很小的随机数。
表格按照TopN控制每个门店显示的产品数量,门店名称、产品图片、产品ID按照前期使用EasyShu提取的坐标有序排列,并使用CONCATENATEX连接到一起。
最后套一层SVG的标准语法,返回图表。
完。
相关文章
- [Go] Golang练习项目-GO语言实现选择排序
- [Go] 申请成功软件著作权了😎✌!-GOFLY在线客服系统
- [GO] golang练习项目-gorm与mysql的增删查改操作
- [前端]GOFLY项目-响应式登录页的设计和实现
- [Go] Golang练习项目-GO语言实现插入排序
- [Go] 解决packets.go:36: read tcp 127.0.0.1:51139->127.0.0.1:3306: wsarecv: An established connection was aborted by the software in your host ma chine.
- [Go] Golang练习项目-GO实现冒泡排序以及优化算法
- [Go] Golang练习项目-GO语言实现快速排序-第一个数作为基准更容易理解
- [Linux] 使用tcpkill杀掉tcp连接
- [Go] go run 时 os.Getwd 和 os.Executable 获取程序根路径
- [Go] Golang练习项目-go test单元测试报错undefined函数未定义
- [Go]go.mod 文件中的// indirect意思代表间接依赖
- [Go] Golang练习项目-快速排序的GO语言实现
- [Go] 解决 imported from implicitly required module
- [Go] GO语言实战-为博客园增加gofly在线客服功能
- [Go]go语言实战-go版本的supervisord编译安装与运行
- [Go] GO语言实战-实现标题闪烁
- [Go] Go语言实战-基于websocket浏览器通知的实现
- [Linux]阿里云万网域名-腾讯云服务器nginx下配置免费的https
- [Go] GO语言实战-gin框架项目实现中英文切换