如何计算日期列和过滤器表达式之间的日期差异
How to calculate the date difference between a date column and a filter expression
我有一个事实 table 个案例,其中包含两个日期列:startDate 和 endDate 以及一个 unitCount。我有一个包含所有日期的无关日期维度。
这样我可以计算出病例数:
Number of cases (Beginning of month) :=CALCULATE(
sum('Fact'[unitCount]),
FILTER('Fact',
'Fact'[endDate]>=MIN(Date[Date]) &&
'Fact'[startDate]<=MIN(Date[Date])
))
生成一个不错的列表效果很好:
Year-Month Number of cases(Beginning of month)
2018-01 2
2018-02 5
2018-03 3
... etc
我想添加一个列,用于衡量每个月初案例的平均持续时间。
我试过测量:
Average duration (Beginning of month):=calculate(AVERAGEX('Fact',
datediff('Fact'[startDate],
MIN('Date'[Date]),
MONTH)),
FILTER('Fact',
'Fact'[endDate]>=MIN('Date'[Date]) &&
'Fact'[startDate]<=MIN('Date'[Date])
))
但是此代码失败并出现错误:在 Datediff 函数中开始日期不能晚于结束日期。这应该不是问题,因为过滤器可以防止这种情况发生。我该如何解决这个问题?
我想我可能已经找到了解决方案:
Average duration :=
CALCULATE (
AVERAGEX (
'Fact',
DATEDIFF (
'Fact'[startDate],
MINX ( FILTER ( 'Date', Date[Date] >= 'Fact'[startDate] ), 'Date'[Date] ),
MONTH
)
),
FILTER (
'Fact',
'Fact'[endDate] >= MIN ( Date[Date] )
&& 'Fact'[StartDate] <= MIN ( Date[Date] )
)
)
这段代码似乎运行良好。太棒了!
我有一个事实 table 个案例,其中包含两个日期列:startDate 和 endDate 以及一个 unitCount。我有一个包含所有日期的无关日期维度。
这样我可以计算出病例数:
Number of cases (Beginning of month) :=CALCULATE(
sum('Fact'[unitCount]),
FILTER('Fact',
'Fact'[endDate]>=MIN(Date[Date]) &&
'Fact'[startDate]<=MIN(Date[Date])
))
生成一个不错的列表效果很好:
Year-Month Number of cases(Beginning of month)
2018-01 2
2018-02 5
2018-03 3
... etc
我想添加一个列,用于衡量每个月初案例的平均持续时间。
我试过测量:
Average duration (Beginning of month):=calculate(AVERAGEX('Fact',
datediff('Fact'[startDate],
MIN('Date'[Date]),
MONTH)),
FILTER('Fact',
'Fact'[endDate]>=MIN('Date'[Date]) &&
'Fact'[startDate]<=MIN('Date'[Date])
))
但是此代码失败并出现错误:在 Datediff 函数中开始日期不能晚于结束日期。这应该不是问题,因为过滤器可以防止这种情况发生。我该如何解决这个问题?
我想我可能已经找到了解决方案:
Average duration :=
CALCULATE (
AVERAGEX (
'Fact',
DATEDIFF (
'Fact'[startDate],
MINX ( FILTER ( 'Date', Date[Date] >= 'Fact'[startDate] ), 'Date'[Date] ),
MONTH
)
),
FILTER (
'Fact',
'Fact'[endDate] >= MIN ( Date[Date] )
&& 'Fact'[StartDate] <= MIN ( Date[Date] )
)
)
这段代码似乎运行良好。太棒了!