Dax 和 Power BI,默认和切片器

Dax and Power BI, default and slicer

我正在尝试为用户设置一个默认显示今天数据的报告。

但我也希望与报告共享的人能够选择从 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")

但我想让用户能够在打开报表时看到默认值,也可以对报表进行切片。在这种情况下,如果在我的过滤器中选择 "YES",用户将无法更改日期。

这在 Power BI 中可行吗?

您可以利用 ISFILTERED 函数来实现这样的行为。

首先创建一个新的 table,您将使用它作为切片器中的值

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

然后进入您的模型视图并在日期字段上创建 SlicerDate table 和日期 table 之间的关系。

现在对您的 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.' 您在视觉上的过滤器将忽略所有其他记录。

希望对您有所帮助