根据切片器选择更改列值

时间:2018-05-09 08:22:00

标签: powerbi dax powerbi-desktop

使用PowerBI桌面,我创建了一个小表(称为TimeSelector),包含三个元素:Day,Week和Month

Table example

我们的想法是使用此表的内容创建一个包含三个选项的切片器

Slicer

因此,选择其中一个选项应该会改变表格中日期的使用方式。 例如,选择Day会产生下表:

DayTable

选择周会导致:

WeekTable

等。

我尝试编写一个考虑所选切片器元素的新度量,但它不起作用:

DayWeekMonthSelection = IF(CONTAINS(TimeSelector;TimeSelector[DayWeekMonth];"Month");
                           MONTH(VALUES('uptime_downtime'[Uptime_date])))

这只是公式的第一部分,仅测试月份选项作为开始。

关于如何做到这一点的任何想法?

2 个答案:

答案 0 :(得分:1)

提供另一个观点:

我采用的方法是在数据库中有一个单独的表 - 包含有关日期的元数据,称为date_lookup。

此表中的2个字段是FirstDateOfMonth& FirstDateOfWeek。

其他一些领域是lastDateOfMonth& LastDateOfWeek,也是DayOfWeek。

通过使用这些字段,我可以轻松呈现按月或周分组的视觉效果。

当然,您可以使用函数来获取此信息,但函数可能取决于平台。如果您正在加入date_lookup加入 - 它不再需要从那里获取此信息...

我们需要存储此元数据的主要原因是我们公司财务年度是7月 - 6月。因此我们需要提供正确的FY - 它存储在date_lookup表中的字段中。我也有在那里确定公众假期的领域......

答案 1 :(得分:0)

这是一个有趣的问题,但我不确定如何完全按照你的要求去做,所以我建议一个替代方案。 (根据切片器选择更改度量并不困难,但我不确定换出字段/维度的好方法。)

不是为切片器创建单独的表,而是另一种可能的方法是创建日期层次结构。通常,当您将日期列拖到行或列框中时,它会自动创建一个带有年/季/月/日的日期层次结构,但由于您需要一周而不是四分之一,所以让我们手动创建一个。

首先,为周和月创建一对计算列。例如:

Month = FORMAT(uptime_downtime[Date], "mmm")
Week = WEEKNUM(uptime_downtime[Date])

现在右键单击字段上的日期,然后选择“新建层次结构”。现在看起来应该是这样的:

New Hierarchy

现在将MonthWeek列拖到Date Hierarchy上,然后按适当顺序重新排列:

Full Hierarchy

现在,您可以在矩阵中使用该层次结构,并使用向上钻取和向下钻取按钮

Drill Up or Down

获取不同的分组:

Date Week Month