首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Power视觉使用数据切割器的一侧

Power视觉使用数据切割器的一侧
EN

Stack Overflow用户
提问于 2018-12-02 20:05:36
回答 1查看 1.4K关注 0票数 0

我有一个视觉,需要显示趋势6周的度量,然而,报告上的其他视觉是基于一个自定义范围。因此,在查看报表时,有一个日期切片器,它有一个开始日期和一个结束日期。

我需要做的是创建一个度量/可视化,显示一个6周的趋势,基于在该切片机中选择的最后一个日期。因此,即使在日期筛选器中选择2周,视觉也会显示最后6周。

最终用户选择一个日期范围(任何地方从1-2周),我需要显示一个6周趋势图表的基础上,最后一天选择的范围。因此,为了做到这一点,我需要找到一种方法来查看在切片机中选择的最大日期来使用,并使视觉独立于所述切割器。换句话说,如果你选择上周一到上周五,视觉将显示一个6周的趋势,截止上周五。

所以我知道我可以使用DAX函数LASTDATE()来获得切片器中的最后一个日期,然后减去6周。我遇到的问题是,当我创建可视化时,切割机上的两个日期都会将其强制到选定的日期范围(而不是6周)。当我为视觉更改视觉交互时,视觉中的最后一个日期不再是选定的日期。

有什么办法让这件事起作用吗?

编辑:下面是我正在使用的代码:

两张桌子

销售量

代码语言:javascript
复制
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

日历

代码语言:javascript
复制
    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

用于获取开始日期的DAX语句(从选定的最大日期起6周):

代码语言:javascript
复制
Six Weeks From Last Date Selected =
DATEADD(LASTDATE('Calendar'[Date]), -42, DAY) 

六周销售:

代码语言:javascript
复制
6 Weeks Sales =
CALCULATE(
    SUM('Sales'[Sales]),
    DATESBETWEEN(
        'Calendar'[Date],
        [Six Weeks From Last Date Selected],
        LASTDATE('Calendar'[Date])
    )
)

谢谢您提前提供帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-02 21:25:05

我猜您的度量是取选定日期范围和六个星期范围的交集的总和。

如果您希望始终获得六周时间,那么应该通过将ALL('Calendar'[Date])添加到CALCULATE函数中来删除date列上的筛选器上下文:

代码语言:javascript
复制
6 Weeks Sales =
CALCULATE(
    SUM('Sales'[Sales]),
    ALL('Calendar'[Date]),
    DATESBETWEEN(
        'Calendar'[Date],
        [Six Weeks From Last Date Selected],
        LASTDATE('Calendar'[Date])
    )
)

编辑:上面的会给你6周的销售价值,但不是你想要的。

要做您想做的事情,您需要创建第二个与Sales相关的日历表。

代码语言:javascript
复制
Cal2 = 'Calendar'

Cal2[Date]用于视觉而不是'Calendar'[Date],并编写一个消除'Calendar'过滤并进行6周过滤的度量。例如:

代码语言:javascript
复制
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()
)

您也可以使用过滤器来完成此操作:

代码语言:javascript
复制
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
    )
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53584121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档