zl程序教程

您现在的位置是:首页 >  其他

当前栏目

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的标准语法,返回图表。

完。