我有一个视觉效果,需要显示6周的趋势,但是,报告上的其他视觉效果是基于自定义范围的。因此,在查看报告时,有一个日期切片器,其中包含开始日期和结束日期。
我需要做的是创建一个度量/视觉效果,以该切片器中选择的最后日期为基础,显示6周趋势。因此,即使您在日期过滤器中选择了2周,视觉效果也会显示最近6周。
最终用户选择一个日期范围(1-2周中的任何时间),我需要根据所选范围中的最后一天显示6周趋势图。因此,为了做到这一点,我需要找到一种方法来查看在切片器中选择使用的最大日期,并使图像独立于所述切片器。换句话说,如果您选择“上周一”到“上周五”,则视觉效果将显示到上周五为止的6周趋势。
所以我知道我可以使用DAX函数LASTDATE()
来获取切片器中的最后日期,然后从中减去6周。我遇到的问题是,当我创建视觉效果时,切片器上的两个日期都将其强制为选定的日期范围(而不是6周)。当我更改视觉对象的视觉交互时,视觉对象中的最后日期不再是选定的日期。
关于如何使它起作用的任何想法?
编辑:这是我正在使用的代码:
销售
Sales ID | Customer ID | Qty | Sales Date
1 A 2 | 12/2/2018
2 A 11 | 12/2/2018
3 B 5 | 11/28/2018
4 B 7 | 11/28/2018
5 C 10 | 11/27/2018
6 D 20 | 11/27/2018
7 E 9 | 11/25/2018
日历
Date | Weeknum
12/2/2018 49
12/1/2018 48
11/30/2018 48
11/29/2018 48
11/28/2018 48
11/27/2018 48
11/26/2018 48
11/25/2018 47
11/24/2018 47
...And so on
我用来获取开始日期(从所选的最大日期起6周)的DAX语句:
Six Weeks From Last Date Selected =
DATEADD(LASTDATE('Calendar'[Date]), -42, DAY)
六周销售量:
6 Weeks Sales =
CALCULATE(
SUM('Sales'[Sales]),
DATESBETWEEN(
'Calendar'[Date],
[Six Weeks From Last Date Selected],
LASTDATE('Calendar'[Date])
)
)
感谢您的任何帮助!
答案 0 :(得分:1)
我猜你的度量是在所选日期范围和六个星期范围的交集上求和的。
如果您希望始终有六个星期的时间,则应通过在ALL('Calendar'[Date])
函数中添加CALCULATE
来删除日期列上的过滤器上下文:
6 Weeks Sales =
CALCULATE(
SUM('Sales'[Sales]),
ALL('Calendar'[Date]),
DATESBETWEEN(
'Calendar'[Date],
[Six Weeks From Last Date Selected],
LASTDATE('Calendar'[Date])
)
)
编辑:以上内容将为您提供6周的销售价值,而不是您所追求的。
要执行所需的操作,您需要创建与Sales
相关的第二个日历表。
Cal2 = 'Calendar'
为视觉效果使用Cal2[Date]
而不是'Calendar'[Date]
,并写出删除'Calendar'
过滤条件并改为6周过滤条件的措施。例如:
6 Weeks Sales =
VAR EndDate = LASTDATE('Calendar'[Date])
VAR StartDate = EndDate - 42
VAR CurrDate = SELECTEDVALUE(Cal2[Date])
RETURN
IF( StartDate < CurrDate && CurrDate <= EndDate,
CALCULATE(
SUM(Sales[Qty]),
ALL('Calendar')
),
BLANK()
)
您也可以使用过滤器来代替:
6 Weeks Sales =
VAR EndDate = LASTDATE('Calendar'[Date])
VAR StartDate = EndDate - 42
RETURN
CALCULATE(
SUM(Sales[Qty]),
ALL('Calendar'[Date]),
FILTER(
Cal2,
StartDate < Cal2[Date] && Cal2[Date] <= EndDate
)
)