y523648头像
关注

Powerbi 动态矩阵

假设有一张门店销售表

我们想要实现:

1. 通过一个日期切片器,统计显示选中的年月的销售额,如果切片器无任何选中时,统计所有年月

2. 店长只统计选中的日期范围内最新的店长,如果切片器无任何选中时,默认统计当前最新的店长

实现方法:

1.建立一张日期表和辅助表

日期表 = 
DISTINCT(
    SELECTCOLUMNS(
        ALL('门店销售'),
        "年月",'门店销售'[年月]
    )
)

辅助表 = 
DISTINCT(
    SELECTCOLUMNS(
        ALL('门店销售'),
        "门店", '门店销售'[门店],
        "店长", '门店销售'[店长],
        "年月", '门店销售'[年月]
    )
)

注意三张表不要建立任何relationship

2. 添加一个矩阵

        行绑定辅助表[门店]辅助表[店长]两个字段

        列绑定日期表[年月]

3.新建度量值 [销售额],并绑定到矩阵的值

销售额 = 
CALCULATE(
    SUM('门店销售'[销售额]),
    FILTER(
        '门店销售',
        '门店销售'[年月] = SELECTEDVALUE('日期表'[年月]) &&
        '门店销售'[门店] = SELECTEDVALUE('辅助表'[门店])
    )
)

        

4.新建度量值 [最新店长]

最新店长 = 
VAR Max_Selected = MAXX(VALUES('日期表'), '日期表'[年月])
VAR Temp = INTERSECT(
                FILTER(VALUES('辅助表'), '辅助表'[年月] = Max_Selected), 
                '辅助表')
RETURN 
    COUNTROWS(temp)

这里讲解一下:

1)VALUES()可以获取到日期切片器当前选中的日期范围,如果没有任何选中,则返回完整的日期范围,都是以表的形式返回。所以用MAXX就可以求到最新的日期

2)FILTER(VALUES('辅助表'), '辅助表'[年月] = Max_Selected):我们用第1步获取的选中最新日期,去过滤辅助表

3)INTERSECT相当于把两个表进行inner join,这样就可以得到一张只包含选中的最新日期的辅助表

4) 返回第3步得到的数量 (这里一定要先获取筛选后的表,再计算行数)

5 把度量值 [最新店长]放入矩阵的筛选器,选择“不为空”

6.结果如下:

当没有任何日期选中时,显示所有月份的销售额和最新的店长

当有日期选中时,显示选中月份的销售额,和范围内最新的店长

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/y523648/article/details/164289008

文章来源转载

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--