Powerbi 动态矩阵

假设有一张门店销售表

我们想要实现:

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

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

实现方法:

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

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

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

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

  1. 添加一个矩阵

行绑定辅助表门店 和**辅助表店长**两个字段

列绑定日期表年月

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,这样就可以得到一张只包含选中的最新日期的辅助表

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

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

6.结果如下:

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

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

相关推荐
宝桥南山12 天前
GitHub Copilot - 尝试配置和使用一下Microsoft Fabric Core MCP Server
运维·microsoft·ai·微软·powerbi·fabric
迅易科技1 个月前
Power BI 新功能解读:重构 AI 时代的企业数据建设内核
微软·big data·powerbi
维C°2 个月前
PowerBI数据准备—合并文件夹中同表头Excel或csv
excel·powerbi
维C°2 个月前
PowerBI数据准备—合并同表头的sheet
powerbi
维C°2 个月前
PowerBI数据准备—获取Sharepoint/Onedrive上的Excel
powerbi·sharepoint
Sharewinfo_BJ3 个月前
当 BI 遇上 AI:到底是谁在帮谁?
大数据·人工智能·ai·数据分析·微软·powerbi
牛猫Data3 个月前
POWER BI技巧:报告名称的Emoji符号妙用
microsoft·数据分析·数据可视化·powerbi
Sharewinfo_BJ4 个月前
从手工报表到实时BI:一个零售数据平台的踩坑与重构实战
大数据·人工智能·科技·数据分析·微软·powerbi
y5236484 个月前
PowerBI 字段参数的层次用法,以及DAX获取选中字段和选中字段的值
powerbi