如何计算每月平均值,包括在Power BI中没有记录的月份

时间:2020-06-05 17:45:52

标签: powerbi average dax

我正在尝试为每个调查员计算每月平均病例数。它可能超过一季度,一年或几年,因此它需要响应我放入的可视化或表格上下文。基本表具有“案例”(个人案例号),“调查者”(人名),“分配日期”(未显示),并从该日期中提取了“月”和“年”列以及“年月”类别列。

mockdata

我创建一个caseCount度量为

caseCount = COUNT('Table'[Case])

enter image description here

我尝试了几种不同的方法来计算所有月份的平均值(在本例中为4)。因为玛丽每个月都有个案,所以她的平均值是正确的(1.75),但是Sam的分母= 3,因此计算不正确。 (返回1.3而不是1)。如何强制计算使用全部月份。

其他说明: 表格中的某些情况可能超出了我想要的日期范围,因此我尝试使用

Avg = CALCULATE(AVERAGE(caseCount), Table[Date] > #10/31/2019#)

我还尝试了使用CALCULATE(DIVIDE(),[Date]> 10/31/2019。]的几种变体。似乎一切都排除了没有分配调查者的那几个月。

使用在此创建的Distinct YearMonth值。

1 个答案:

答案 0 :(得分:0)

这是因为评估上下文。
我将其定义如下:

VAR _casecount = //count number of cases in the selected period, applied on the fact table
VAR _months = COUNTROWS(CALCULATETABLE(VALUES('Calendar'[Month]), ALLSELECTED('Calendar'))) //count number of months in the selected period
RETURN
_casecount/months

更新

我没有考虑涉及2019年5月和2020年5月的多年期情况。然后,让我们使用DATEDIFF重新构造解决方案:

VAR _casecount = //count number of cases in the selected period, applied on the fact table
VAR _firstCalendarDate = CALCULATE(MIN('Calendar'[Date], ALLSELECTED('Calendar'))
VAR _lastCalendarDate = CALCULATE(MAX('Calendar'[Date], ALLSELECTED('Calendar'))
VAR _months = DATEDIFF(_firstCalendarDate, _lastCalendarDate, MONTH)
RETURN
_casecount/months