DAX平均包括零

我的问题是,我想计算一个每日平均考虑天数为零。

让我澄清一下:

我想计算每个类别单位的平均每日价值,如下表所示:

数据表

当我总结每一天和类别的价值时,我得到:

在这里输入图像说明

我想在平均计算中包含零。

我使用下面的代码:

SUMMARIZE( Data, Data[Category], "Average", AVERAGEX( SUMMARIZE( Data, Data[Date], "Sum of Units", SUM(Data[Units]) ), [Sum of Units] ) ) 

但是问题是对于B类,它没有考虑那些0的日子。

你能指导我如何解决它?

提前致谢!

乔治

解决这个问题的一个方法是创build一个日历表,然后可以用它来计算任何分组时段的天数。 这也意味着你可以使用非标准的日历,例如4-4-5

通过创build日历表,您可以利用DAX中的FIRSTDATELASTDATEfunction。

我build议将日历列添加到日历表中,可以使用以下公式使用DAX创build日历表。 在计算列中使用DAX中的today函数只会在模型更新时进行评估。

在我的例子中,我在date表中创build了一个名为Past_Dates的计算列

Past_dates = IF(TODAY()> [Date],TRUE(),BLANK())

例如,如果我创build以下的措施,今天只是用于说明。

 Start_date:=FIRSTDATE( Dates[Date] ) End_Date:=LASTDATE( Dates[Date]) Today:=TODAY() EndPhased:=CALCULATE( LASTDATE( Dates[Date] ), Dates[Past_dates] = TRUE()) 

当添加到一个空的数据透视表时,其计算结果如下。 请注意,如果您有多年的数据,则希望在数据透视表中的某个地方有一年。

在这里输入图像说明

拥有“过去”标志的想法是不要计算将来不会有数据的日子。 因此,例如在九月份,它只能使用11天的销售,而不是全部30天。

如下面的例子所示,开始和结束date的结果甚至以季度为基础。

在这里输入图像说明

因此,现在我们有一种方法来获取一个时期的开始和结束date,下一步就是将其添加到我们的计算度量中。

在下面的例子中,我们遍历每个唯一的类别名称。 在此类别中,我们正在对已售出的单位进行汇总,然后除以EndPhased和Start_Date + 1之间的天数。然后将结果按该期间有数据的类别数进行平均。

 Average:=AVERAGEX ( VALUES ( Data[Category] ), CALCULATE ( DIVIDE ( SUM ( Data[Units] ), [EndPhased] - [Start_date] + 1 ) ) ) 

在我看来,你需要有一个底层的行中的零值(在你的初始数据表)。 现在,02/01/2017你实际上没有B的零值。 如果你添加一个值为|的行 02/01/2017 | B | 0 | 我相信你会看到它的平均数。 现在,我认为数据透视表实际上没有反映任何价值(空白),而不是零值,因此目前没有计算平均值。

我认为最好的方法是使用UNION函数添加缺less的零:

 SUMMARIZE( Data, Data[Category], "Average", AVERAGEX( UNION( SUMMARIZE( Data, Data[Date], "Sum of Units", SUM(Data[Units]) ), ADDCOLUMNS( EXCEPT( ALL(Data[Date]), VALUES(Data[Date]) ), "Sum of Units", 0 ) ), [Sum of Units] ) ) 
Interesting Posts