PowerBI 筛选 3 个日期范围内

问题描述 投票:0回答:1

我有一个包含帐号和 3 个日期(气球、到期日和利率变化)的表格。我想对这些进行集中过滤,如果任何一个字段具有过滤后的处理日期之后 36 个月内的日期,则返回整行。使用相对日期仅返回适合未来 36 个月内所有 3 个日期的行。

我已经接近

filtcol = 

if(not(isblank(ds[BalloonDate])),(datediff(ds[AsOfDate], ds[BalloonDate], month) <=36), blank())
||
if(not(isblank(ds[MaturityDate])),(datediff(ds[AsOfDate], ds[MaturityDate], month) <=36), blank())
||
if(not(isblank(ds[ChangeDate])),(datediff(ds[AsOfDate], ds[ChangeDate], month) <=36), blank())

这会正确地将日期在 36 个月内的行标记为 TRUE,将日期超出的行标记为 FALSE,但它也会将具有过去值的日期标记为 TRUE,这是什么原因?

filter powerbi dax
1个回答
0
投票
如果 D2 在 D1 之前,

DATEDIFF(D1, D2, X)
将返回负数。您需要检查是否在 0 到 36 之间。

使用

VAR
作为局部变量的示例,以及可能有助于提高可读性的
SWITCH

filtcol = 
  var diffBallon = DATEDIFF(ds[AsOfDate], ds[BalloonDate], MONTH)
  var diffMaturity = DATEDIFF(ds[AsOfDate], ds[MaturityDate], MONTH)
  var diffChange = DATEDIFF(ds[AsOfDate], ds[ChangeDate], MONTH)

  return SWITCH( TRUE(),
    0 <= diffBallon && diffBallon <= 36, TRUE(),
    0 <= diffMaturity && diffMaturity <= 36, TRUE(),
    0 <= diffChange && diffChange <= 36, TRUE(),
    FALSE()
  )
© www.soinside.com 2019 - 2024. All rights reserved.