选择一个月份, 自动往前推3个月显示清单
YM格式必须是 202501类似的整数,

首先根据上面的表新增一个日期表:
日期表 = VALUES('Sheet1'[ym])
在主表里新增一个度量值,
selected =
VAR ym_selected = SELECTEDVALUE('日期表'[ym]) // 假设 '日期表' 是独立的日期表
VAR ym_current = SELECTEDVALUE('Sheet1'[ym]) // 当前行的 ym 值
VAR ym_1 = IF(MOD(ym_selected, 100) = 1, ym_selected - 89, ym_selected - 1)
VAR ym_2 = IF(MOD(ym_1, 100) = 1, ym_1 - 89, ym_1 - 1)
RETURN
IF(
ym_current IN {ym_selected, ym_1, ym_2},
"Y",
"N"
)
图表区域放一个 日期表的筛选器,
放主表的明细.并且在Filters里设置 selected="Y"
即可.
==============================================
图表列标题动态显示最近3个月的(根据选择确定最近3个月)
data表: Customer, YM, Amt 3列,
创建2个日期标:
ym_base = DISTINCT(VALUES('data'[YM])) (在关系模型里, 用它的YM和data标的YM连起来 , 1对多关系)
YM_Parameter = DISTINCT(VALUES('data'[YM])) 单独的表, 筛选器用.
在data里增加一个度量值:
Amt SelectedAndPrevious2 =
VAR SelectedYM = SELECTEDVALUE(YM_Parameter[YM])
VAR CurrentYM = SELECTEDVALUE(ym_base[YM])
// 计算前1个月
VAR PrevMonth1 =
IF(
MOD(SelectedYM, 100) = 1, // 如果是1月
INT(SelectedYM/100 - 1)*100 + 12, // 上年12月
SelectedYM - 1 // 其他情况直接减1
)
// 计算前2个月
VAR PrevMonth2 =
SWITCH(
MOD(SelectedYM, 100),
1, INT(SelectedYM/100 - 1)*100 + 11, // 1月前2个月是上年11月
2, INT(SelectedYM/100 - 1)*100 + 12, // 2月前2个月是上年12月
SelectedYM - 2 // 其他情况直接减2
)
// 检查当前YM是否是需要显示的月份
VAR IsVisible =
CurrentYM = SelectedYM ||
CurrentYM = PrevMonth1 ||
CurrentYM = PrevMonth2
RETURN
IF(
IsVisible,
SUM(data[Amt]),
BLANK()
)
ym_base 和 data表关联起来.
图表区域:
行 : Customer,
列 ym_base[YM]
值 data[Amt]
切片器: YM_Parameter
设置单选模式, 采用倒序排序 (即打开的时候默认选择了最大的, 那么往前推2个月, 就是最大的3个月被选择)
浙公网安备 33010602011771号