如何使用Power BI Slicer过滤表的两列

时间:2019-07-30 19:27:21

标签: powerbi powerbi-desktop powerbi-custom-visuals

我有一些这样的人的进入和退出时间表:

Name   | EnterTime | ExitTime
=============================
Tom    | 13:52:00  | 20:55:00

Robert | 15:55:00  | 21:12:00

Sarah  | 19:08:00  | 19:48:00

Jack   | 16:54:00  | 17:32:00

我想向用户显示在选定的时间点存在的用户。

换句话说,我想要一个dateTime切片器,用户将选择一个时间,然后对该表进行过滤以仅显示带有以下内容的行:

EnterTime < selectedTime < ExitTime

1 个答案:

答案 0 :(得分:1)

这可以通过几个步骤完成。

首先,我们需要一个日期列表才能进入切片器。如果您使用单独的日期表,那么这是一个很好的来源。否则,您可以使用DAX构建一个,其中将在EnterTime和ExitTime列中包含所有日期。

在建模功能区中单击“创建表”。放入以下DAX:

DateListTable = UNION(
    SELECTCOLUMNS('MyTable', "DateList", 'MyTable'[EnterTime]),
    SELECTCOLUMNS('MyTable',"DateList", 'MyTable'[ExitTime])
)

您现在有了切片器和表格视觉。选择切片器,然后导航到“格式化”功能区(仅当选择了视觉效果时才可用。使用“编辑交互”关闭表上切片器的过滤。将其设置为不进行交互(带有穿过其中的对角线的圆)。 / p>

创建新度量

ShowDate = 

VAR SelectedDate = SELECTEDVALUE('DateListTable'[DateList], BLANK())

Return 
    if(SelectedDate >= Max('MyTable'[EnterTime ]) && SelectedDate <= max('MyTable'[ExitTime]), 1, 0)

最后,在新度量ShowDate值为1时对表进行视觉过滤。

因此,我们创建了一个具有完整日期列表的独立切片器。但是,我们打破了它与表之间的任何过滤器关系。取而代之的是,我们使用“ SelectedValue”来捕获从过滤器中选择的值,并创建一个dax量度,当过滤器中的值介于EnterTime和Exit time之间时,它会显示“ 1”。过滤掉那个达克斯度量,我们得到我们想要的行为。