Dax和Power BI,默认和切片器

时间:2020-04-15 07:41:25

标签: date filter powerbi dax default

我正在尝试为用户创建一份报告,默认情况下会显示今天的数据。

但是我也希望与之共享报告的人能够选择从70年代到2043年的数据。

我目前设法在DAX中设置报告过滤器:

Date_Today_Default = 
var currentrowdate = FORMAT('Date'[DATE], "dd/mm/yyyy")
var DateToday = FORMAT(TODAY(),"dd/mm/yyyy")
return
IF(DateToday = currentrowdate, "YES", "NO")

但是,我想让用户可以在报告打开时查看默认值,并对报告进行切片。在这种情况下,如果在我的过滤器中选择“是”,则用户无法更改日期。

这在Power BI中可行吗?

1 个答案:

答案 0 :(得分:1)

您可以利用ISFILTERED函数为您提供类似的行为。

首先创建一个新表,该表将用于切片器中的值

SlicerDate = SELECTCOLUMNS('Date', "Date",[Date])

然后进入模型视图,并在Date字段上的SlicerDate表和Date表之间创建一个关系。

现在对dax进行以下小的更改。

Date_Today_Default = 
var currentrowdate = FORMAT(Max('Date'[Date]), "dd/mm/yyyy")
var DateToday = FORMAT(TODAY(),"dd/mm/yyyy")
return
IF (isFiltered(SlicerDate[Date]), "YES", IF (DateToday = currentrowdate, "YES", "NO"))

创建切片器视觉效果,并将SlicerDatetable中的日期字段带入其值。

当您在切片器中选择一个日期时,您将使'Date_Today_Default'对所有记录自动显示'yes',并使所有记录通过视觉上的过滤器。但是,它们会被您在切片器中刚刚选择的日期过滤掉!这样一来,您的用户就可以控制所选的日期。

在切片器中未选择任何日期时,“ Date_Today_Default”逻辑将属于IF DateToday = CurrentRow语句,并且仅将一行标记为“ YES”。视觉上的过滤器将忽略所有其他记录。

enter image description here

希望有帮助