首页 > 解决方案 > 如何计算标准。开发。使用 DAX/PowerBI 聚合行后的度量

问题描述

我有一个这样的表,其中包含计算的步率列。我想获得 5 周前某些小时的汇总步率。

在此处输入图像描述

这是总结的步率。

在此处输入图像描述

然后我想得到标准。开发。这些总结的步率。

如何在此处创建一个采用这五个值的标准差的度量?当我试图解决这个问题时,我最终只是在汇总表中添加了 Step Rates,这给了我一个巨大的错误值。

这是我现在使用的获得高价值的 DAX:如果这里有更简单的方法,请告诉我。

Daily Base Fare StdDev N Weeks = 

var _curr = max(' Booking'[Hour Offset]) //current selection

var _currDOW = max(' Booking'[Day of Week]) //selection dow

var _currHour = max(' Booking'[Hour]) //selection hour

var _N = 5 //weeks to go back

var _offset = _curr -24*7*(_N) //oldest datehour in range

var _steprate = sum(hourlyfunnelsteps[stepRate])


var x_sum = calculate(_steprate,

filter(all(' Booking'),

' Booking'[Hour Offset] >= _offset &&

' Booking'[Hour Offset] < _curr &&

' Booking'[Day of Week] = _currDOW &&

' Booking'[Hour] = _currHour

))


var mean = divide(x_sum,_N)


var dev_sq_sum = sumx(

filter(all(' Booking'),

' Booking'[Hour Offset] >= _offset &&

' Booking'[Hour Offset] < _curr &&

' Booking'[Day of Week] = _currDOW &&

' Booking'[Hour] = _currHour),

power(_steprate - mean,2))


var result = sqrt(dev_sq_sum / _N)

return
x_sum

标签: powerbiaggregatedaxaggregate-functions

解决方案


您的测量肯定不会按预期工作,因为您正在尝试使用 CALCULATE 修改常量

[...]
var _steprate = sum(hourlyfunnelsteps[stepRate])

var x_sum = calculate(_steprate,
[...]

不过,关于您的更大问题,我认为您可以按照以下方式写一些东西:

StdDevCalc =
VAR < ...selections... >
VAR Summary =
    SUMMARIZE (
        FILTER ( ALL ( ' Booking' ), < ...filter conditions... > ),
        ' Booking'[Hour Offset],
        "StepRate", [SumNextStep] / [SumCurrentStep]
    )
RETURN
    STDEVX.P ( Summary, [StepRate] )

内置的STDEVX.P 函数可以对任何表表达式进行操作,包括创建和存储为变量的表表达式。


推荐阅读