咨询:如何通过DAX计算每日平均请求数?
解决方法
首先,你当前的DAX表达式存在问题:FILTER里的条件'demande'[date_insert] = 'demande'[date_insert]对所有行都成立,所以这个度量值返回的是整个表的总请求数,而非单日期的请求数。
下面是正确实现“平均每日请求数”的几种方式:
方式一:分两个度量值实现
1. 先计算单日期的请求数
创建度量值,用于计算单个日期下的请求数量:
每日请求数 = COUNTROWS('demande')
当你把date_insert列放到可视化组件(比如柱状图的轴)中时,这个度量值会自动根据当前日期的上下文,计算该日期的请求数。
2. 计算平均每日请求数
基于上面的度量值,遍历所有不重复日期并求平均值:
平均每日请求数 = AVERAGEX( VALUES('demande'[date_insert]), // 提取所有存在请求的不重复日期 [每日请求数] // 对每个日期计算请求数后取平均 )
方式二:单个度量值直接实现
可以把逻辑合并到一个度量值里,通过按日期分组后计算每组请求数,再求平均:
平均每日请求数 = AVERAGEX( GROUPBY('demande', 'demande'[date_insert]), // 按日期分组 COUNTX(CURRENTGROUP(), 'demande'[date_insert]) // 统计每组的请求数 )
扩展:包含无请求日期的平均值
如果需要将没有收到请求的日期也纳入计算(这类日期请求数计为0),需要先创建一个完整的日期表:
// 新建日期表,覆盖数据中最早到最晚的日期范围 日期表 = CALENDAR(MIN('demande'[date_insert]), MAX('demande'[date_insert]))
然后将日期表与demande表通过date_insert列建立关系,再创建以下度量值:
平均每日请求数(含无请求日期) = AVERAGEX( '日期表', CALCULATE(COUNTROWS('demande')) // 无请求的日期会返回0 )
内容的提问来源于stack exchange,提问作者IslemBi
相关产品推荐
相关产品推荐

