Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powerbi Power BI:在6个月内计算STDEVX.P_Powerbi_Dax_Standard Deviation - Fatal编程技术网

Powerbi Power BI:在6个月内计算STDEVX.P

Powerbi Power BI:在6个月内计算STDEVX.P,powerbi,dax,standard-deviation,Powerbi,Dax,Standard Deviation,我试图计算最近6个月的STDEVX.p(不包括当前月份;因此在2017年5月,我想计算2016年11月至2017年4月期间的STDEVX.p),以便进一步计算销售订单的变化 销售数据由日常交易组成,因此它包含交易日期:IContractshargebacks[TransactionDate]和售出的单位:IContractshargebacks[ChargebackUnits],但如果给定期间没有销售,则该月将没有数据 例如,在7月1日,过去6个月的销售额如下: Jan 100 Feb 125

我试图计算最近6个月的STDEVX.p(不包括当前月份;因此在2017年5月,我想计算2016年11月至2017年4月期间的STDEVX.p),以便进一步计算销售订单的变化

销售数据由日常交易组成,因此它包含交易日期:
IContractshargebacks[TransactionDate]
和售出的单位:
IContractshargebacks[ChargebackUnits]
,但如果给定期间没有销售,则该月将没有数据

例如,在7月1日,过去6个月的销售额如下:

Jan 100
Feb 125
Apr 140
May 125
Jun 130
因为没有销售,三月就不见了。所以,当我在数据集上计算STDEVX.P时,它是在5个周期内计算的,而实际上有6个周期,只有一个恰好是零

最后,我需要计算当前六个月期间的STDEVX.p。如果在提取月度销售数据时,它只返回3个周期(月),那么它需要假设其他3个周期的值为零

我考虑手动计算标准偏差,而不是使用DAX STDEVX.p公式,并发现以下两个链接可作为如何计算标准偏差的参考,第一个链接最接近我的需要:

我试着去做,但仍然没有得到正确的计算。我的代码是:

STDEVX2 =
    var Averageprice=[6M Sales]
    var months=6
    return
    SQRT(
    DIVIDE(SUMX(
    FILTER(ALL(DimDate),
    DimDate[Month ID]<=(MAX(DimDate[Month ID])-1) &&
    DimDate[Month ID]>=(MAX(DimDate[Month ID])-6)
    ),
    (iContractsChargebacks[SumOfOrderQuantity]-Averageprice)^2),
        months
    )
)
STDEVX2=
var Averageprice=[600万销售额]
风险值月数=6
返回
SQRT(
除法(
过滤器(全部(DimDate),
DimDate[月份ID]=(最大值(DimDate[月份ID])-6)
),
(IContractshargebacks[SumOfOrderQuantity]-平均价格)^2),
月
)
)

*注意:我没有在代码中使用日期参数,而是在日期表中创建了一个计算列,为每个月提供一个唯一的ID,这使我更容易回答。

您的问题肯定会更容易回答,并对您的模型进行更多解释。例如,您如何定义[SumOfOrderQuantity]和[6M Sales],因为其中的错误肯定会影响最终结果。此外,了解您看到的结果与您期望的结果会很有帮助(使用示例数据)

然而,我的猜测是,您的DimDate表是一个标准日期表(每个日期有一行),但您希望按月计算标准偏差

公式中的FILTER语句将日期范围正确限制为前6个完整月,但每个日期仍有一行。您可以通过进入数据视图、在功能区上的建模下选择“新建表”,并将筛选器语句放在以下位置,在Power BI中确认此操作:

Table = FILTER(ALL(DimDate),
DimDate[MonthID]<=(MAX(DimDate[MonthID])-1) &&
DimDate[MonthID]>=(MAX(DimDate[MonthID])-6))
Table=过滤器(全部(DimDate),
DimDate[MonthID]=(最大值(DimDate[MonthID])-6)
假设你在一个月内有超过一天的销售,按天而不是按月计算差异会把事情搞砸

我建议尝试一下:

Table = FILTER(SUMMARIZE(ALL(DimDate),[MonthID]),
DimDate[MonthID]<=(MAX(DimDate[MonthID])-1) &&
DimDate[MonthID]>=(MAX(DimDate[MonthID])-6))
Table=FILTER(汇总(全部(DimDate),[MonthID]),
DimDate[MonthID]=(最大值(DimDate[MonthID])-6)
附加的summary语句意味着您每个月只能得到一行,而不是每个日期得到一行。如果您的[6M销售额]是所有6个月的月平均值,[SumOfOrderQuantity]是每个月的月总和,那么您应该设置为计算方差、平方、除以6和平方根

如果您需要进行进一步的故障排除,请记住,您可以在画布上放一张表,上面有MonthID、SumOfOrderQuantity和[6M Sales],并将您在计算的每个阶段预期的数字与您看到的数字进行比较


希望这能有所帮助。

我在试图根据销售数据计算SKU的变异系数(标准/平均值)时遇到了类似的问题。我可以使用Power Query editor中的Pivot Unpivot函数来解决几个月销售缺失的问题:

1) 导出包含任何计算列的数据

2) 重新导入数据,以便在power query editor中也可以使用计算列

3) 将数据按月份进行数据透视

4) 将空值替换为0

5) 取消激活数据

6) 关闭并应用查询

7) 使用公式为变异系数添加计算列

CV = CALCULATE(STDEV.P(Table1[Value]),ALLEXCEPT(Table1,Table1[Product]))/CALCULATE(AVERAGE(Table1[Value]),ALLEXCEPT(Table1,Table1[Product]))

因此,对于标准差和平均值,也将考虑缺失月份的零销售额。

谢谢Lenard,但我对计算本身有问题。是否可以创建一个表格,用于计算筛选确定的6个月内每个SKU的销售总额,如果其中一个期间没有销售,则应为0?DimDate表格如上文所述。Sales表是每日交易,它包含交易日期:IContractshargebacks[TransactionDate],特定SKU:IContractshargebacks[SKU]和为该SKU出售的单位:IContractshargebacks[ChargebackUnits]我想创建一个表,按SKU和按月汇总IContractshargebacks[ChargebackUnits]。如果在特定月份,SKU没有任何销售,那么我希望该月份的数据中包含IContractshargebacks[ChargebackUnits]的0,然后,我可以在新表中创建一个度量值,计算STDEV.PPerhaps try without SKU,并查看您是否能够实现这一点(因为我在回答中没有说明SKU)。我想您可以很容易地将SKU添加到SUMMARY语句中,但我首先要看看您是否可以在没有SKU的情况下使其正常工作。一旦你搞定了,然后尝试添加SKU。至于创建一个永久的中间表,我不建议这样做,除非有性能问题,特别是如果创建表的唯一原因是这个计算。额外的表会使数据模型膨胀,并可能产生其他副作用,因为现在有两个表重叠。如果这是一条路径,我建议使用powerquery并将附加表与模型的其余部分一起加载,而不是在模型的顶部使用DAX