Power Bi DAX:相对日期过滤

时间:2020-02-11 09:59:35

标签: powerbi dax powerbi-desktop

我有一个快速的问题,是否可以过滤两个月之间的特定日期的数据?

例如1月2日至15日的过滤器。

这可能吗?

例如,我使用一种度量来计算日期之间的天数

jQuery('#recipe').val("everybody@mydomain.com");

上次评估的确显示了从2个月前的16日到最近的15个月,例如12月16日至1月15日。 但是我需要显示最近6个月和最近1年的数据。

我该如何解决这个问题,以便显示过去的6个月和1年。

到目前为止,我不得不使用日期过滤器来手动选择要停止的日期并将其设为自动。

2 个答案:

答案 0 :(得分:1)

如果只是最近6个月或去年,则可以在查询编辑器中创建一个自定义列(这将是最简单的方法)。就像过滤器标志:

'Includes the current month
Last 6 Months Flag = Date.IsInPreviousNMonths([YourDate], 6) or Date.IsInCurrentMonth([YourDate])

'Without the current month
Last 6 Months Flag = Date.IsInPreviousNMonths([YourDate], 6)

与去年相同:

Last Year Flag = Date.IsInPreviousYear([YourDate])

将这些自定义列作为过滤器拖放到报表上,就可以完成。

答案 1 :(得分:1)

考虑采取以下措施进行最新评估(基本上,您之前使用EDATE可以安全地处理十二月/一月,使用变量可以提高性能)

Latest Assessment Date = 
VAR __today = TODAY()
RETURN
IF (
    DAY ( __today ) < 16,
    DATE ( YEAR ( __today ), MONTH(EDATE(__today, - 1)), 15 ),
    DATE ( YEAR ( __today ), MONTH ( __today ), 15 )
)

那么您就可以使用这种方法来处理1/6/12方案,只需将12替换为所需的月份数

Measure 12 =
VAR __nrOfMonthsBack = 12
VAR __lastAssesment = [Latest Assessment Date]
RETURN
    CALCULATE (
        SUM ( Table1[Duration] ),
        ALL('Calendar'),  --this will reset any date filters coming from slicers
        DATESBETWEEN (
            'Calendar'[Date],
            EDATE ( __lastAssesment, - __nrOfMonthsBack ) + 1,
            __lastAssesment
        )
    )

编辑:添加了ALL('Calendar')以禁用来自切片器的过滤器