Excel DAX平均值包括零
我的问题是,我想计算一个每日平均值,考虑到带零的天数 让我澄清一下: 我想用下表计算每个类别单位的平均日价值: 当我将每天和类别的值相加时,我得到: 我想在平均数计算中加上零 我使用以下代码:Excel DAX平均值包括零,excel,powerpivot,calculated-columns,dax,Excel,Powerpivot,Calculated Columns,Dax,我的问题是,我想计算一个每日平均值,考虑到带零的天数 让我澄清一下: 我想用下表计算每个类别单位的平均日价值: 当我将每天和类别的值相加时,我得到: 我想在平均数计算中加上零 我使用以下代码: SUMMARIZE( Data, Data[Category], "Average", AVERAGEX( SUMMARIZE( Data, Data[Date], "Sum of
SUMMARIZE(
Data,
Data[Category],
"Average",
AVERAGEX(
SUMMARIZE(
Data,
Data[Date],
"Sum of Units",
SUM(Data[Units])
),
[Sum of Units]
)
)
但问题是,对于B类,它没有考虑那些0的日子
你能告诉我怎么解决吗
提前谢谢
Jorge在我看来,您需要一个包含零值的底层行(在初始数据表中)。现在,在2017年1月2日,B的实际值不是零。如果您添加一行值为| 02/01/2017 | B | 0 |,我相信您会看到平均值说明了这一点。就目前的情况而言,我相信透视表实际上没有反映任何值(空白)而不是零值,因此当前不将零值计算为平均值。解决此问题的一种方法是创建一个日历表,然后可以使用它来计算任何分组期间的天数。这也意味着您可以使用非标准日历,例如类似4-4-5的日历 创建日历表后,您可以利用DAX中的
FIRSTDATE
和LASTDATE
函数
我建议将“过去日期”列添加到日历表中,可以使用DAX使用以下公式创建日历表。DAX中的today函数在计算列中使用时,将仅在模型更新时进行计算
在我的示例中,我在date表中创建了一个计算列,名为Past_Dates
过去日期=如果(今天()>[Date],TRUE(),BLANK())
例如,如果我创建以下度量,今天的度量只是用于说明
Start_date:=FIRSTDATE( Dates[Date] )
End_Date:=LASTDATE( Dates[Date])
Today:=TODAY()
EndPhased:=CALCULATE( LASTDATE( Dates[Date] ), Dates[Past_dates] = TRUE())
将其添加到空数据透视表时,其计算结果如下所示。
请注意,如果您有多年的数据,您可能希望在轴的某个位置有一年
使用“过去”标志的想法是为了避免计算由于在未来而无法获得任何数据的天数。因此,例如在9月,它将只使用11天的销售,而不是整个30天
如下面的示例所示,开始日期和结束日期的查找甚至可以按季度进行
现在我们有了一种方法来获得一个时期的开始和结束日期,下一步就是将它添加到我们的计算度量中
在下面的示例中,我们迭代每个唯一的类别名称。在类别中,我们将售出的单位相加,然后除以EndPhased和Start_Date+1之间的天数。然后根据在该期间有数据的类别数对结果进行平均
Average:=AVERAGEX (
VALUES ( Data[Category] ),
CALCULATE ( DIVIDE ( SUM ( Data[Units] ), [EndPhased] - [Start_date] + 1 ) )
)
我认为最好的方法是使用UNION函数添加缺少的零:
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]
)
)