例如下面的例子,Year List表和Caleadar表是1对多的关联关系。
Caleadar表:
Caleadar =
VAR StartYear = YEAR(NOW())-5
VAR EndYear = YEAR(NOW())+5
RETURN
ADDCOLUMNS (
CALENDAR (DATE(StartYear,1,1), DATE(EndYear,12,31)),
"Year", YEAR ([Date]),
"Date_Key",value(FORMAT([Date], "YYYYMMDD")),
"Month", MONTH([Date]),
"Month Name",FORMAT([Date],"MMMM"),
"Day",DAY([Date]),
"Year Month", VALUE(FORMAT([Date], "YYYYMM")),
"Week", WEEKDAY ([Date],2),
"Month Abbr",FORMAT([Date],"MMM"),
"Weekday Abbr",FORMAT([Date],"DDD"),
"Quarter",QUARTER([Date]),
"Quarter Name","Q" & CONVERT(QUARTER([Date]),STRING)
)
Year List表:
Year List = SELECTCOLUMNS(
GENERATESERIES(2018, 2028, 1),
"Year",[Value]
)
关联关系:Year字段1对多
报表显示
这种通过关联关系做筛选的做法比较局限,只有被选中的数据才能被筛选出来。
现在想要做的是:当切片器选择某一年份时,列表中显示这一年份及这年之前的数据。
做法
1. 去掉这两个表之间的关联关系
2. 新建一个度量值,用来判断当前列表中每一行的Year是否小于或等于切片器选中的Year
Is Show =
// 切片器选中的Year
VAR SelectedYear = SELECTEDVALUE('Year List'[Year])
// 对应当前列表中的每一行的Year
VAR CurrentYear = SELECTEDVALUE('Caleadar'[Year])
// 当前行的Year小于或等于切片器选中的Year则返回Y,否则返回N
RETURN IF(CurrentYear <= SelectedYear,"Y","N")
3. 将度量值放到表格的筛选器中
鼠标选中表格 --> 将[Is Show]度量值拖拽到“此视觉对象上的筛选器”上 --> 筛选器下拉框选择“等于”,文本框中填入“Y” --> 点击“应用筛选器”
这样就完成了,切片器选择2020年,列表中显示的是2020年及之前的数据。
总结
1. 用作筛选器的度量值最好返回的是一个字符型的值,之前尝试过返回TRUE()或FALSE(),但发现这样无法绑定到列表的筛选器上。
2. 可以点击下面这个按钮将筛选器隐藏掉,这样发布到Power BI Service上就看不见这个筛选器;