假设有一张门店销售表

我们想要实现:
1. 通过一个日期切片器,统计显示选中的年月的销售额,如果切片器无任何选中时,统计所有年月
2. 店长只统计选中的日期范围内最新的店长,如果切片器无任何选中时,默认统计当前最新的店长
实现方法:
1.建立一张日期表和辅助表
日期表 =
DISTINCT(
SELECTCOLUMNS(
ALL('门店销售'),
"年月",'门店销售'[年月]
)
)
辅助表 =
DISTINCT(
SELECTCOLUMNS(
ALL('门店销售'),
"门店", '门店销售'[门店],
"店长", '门店销售'[店长],
"年月", '门店销售'[年月]
)
)
注意三张表不要建立任何relationship
- 添加一个矩阵
行绑定辅助表门店 和**辅助表店长**两个字段
列绑定日期表年月
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,这样就可以得到一张只包含选中的最新日期的辅助表
- 返回第3步得到的数量 (这里一定要先获取筛选后的表,再计算行数)
5 把度量值 最新店长放入矩阵的筛选器,选择"不为空"

6.结果如下:
当没有任何日期选中时,显示所有月份的销售额和最新的店长

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