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 在DAX中计算加权平均值和加权标准差_Powerbi_Dax_Powerbi Desktop - Fatal编程技术网

Powerbi 在DAX中计算加权平均值和加权标准差

Powerbi 在DAX中计算加权平均值和加权标准差,powerbi,dax,powerbi-desktop,Powerbi,Dax,Powerbi Desktop,这是我以前从未尝试过的事情 我想计算数据集的加权标准偏差和加权平均值,该数据集包含根据设定值测量的实际值的记录 计算将使用PowerBI中的DAX查询完成 设定值1 实际值1 设定值2 实际值2 10 8. 101 102 10 11 101 104 10 12 101 97 10 7. 101 99 10 13 101 97 10 13 101 100 10 9 101 98 10 10 101 100 10 8. 101 102 10 14 101 98 10 8. 101 98 10 13

这是我以前从未尝试过的事情

我想计算数据集的加权标准偏差和加权平均值,该数据集包含根据设定值测量的实际值的记录

计算将使用PowerBI中的DAX查询完成

设定值1 实际值1 设定值2 实际值2 10 8. 101 102 10 11 101 104 10 12 101 97 10 7. 101 99 10 13 101 97 10 13 101 100 10 9 101 98 10 10 101 100 10 8. 101 102 10 14 101 98 10 8. 101 98 10 13 101 96 10 13 101 103 10 14 101 102 10 7. 202 205 20 18 202 198 20 18 202 197 20 19 202 203 20 19 202 202 20 19 202 201 20 22 202 202 20 18 202 200 20 17 202 195 20 23 202 198
加权平均值和标准差可根据其数学定义在DAX中实现

假设我们有一个包含列权重和值的表,则加权平均值的公式为

WAvg = 
VAR Num = SUMX( Samples, Samples[Weight] * Samples[Value] )
VAR Den = SUM( Samples[Weight] )
RETURN DIVIDE( Num, Den )
加权标准差的计算公式为

WStdDev = 
VAR WAvg = [WAvg]
VAR Num = SUMX( Samples, Samples[Weight] * (Samples[Value] - Wavg)^2 )
VAR Den = SUM( Samples[Weight] )
VAR WVar = DIVIDE( Num, Den )
RETURN SQRT(WVar)
编辑: 如果我理解您的新请求,权重是具有相同设置值的行数,即用于每个实际值的行数。然后,由于有两对列,我假设要求是每对列有一组度量

公式要求为每组设定值添加行数计数,以用作权重。我将示例表导入为表“V”

设定值1和实际值1的加权平均值

WAvg1 = 
VAR Num =
    SUMX(
        ALL( V ),
        CALCULATE( COUNTROWS( V ), ALLEXCEPT( V, V[Set Value 1] ) ) * V[Actual Value 1]
    )
VAR Den =
    SUMX(
        ALL( V ),
        CALCULATE( COUNTROWS( V ), ALLEXCEPT( V, V[Set Value 1] ) )
    )
RETURN
    DIVIDE( Num, Den )
WStdDev1 = 
VAR Num =
    SUMX(
        ALL( V ),
        VAR WAvg = [WAvg1]
        RETURN
            CALCULATE( COUNTROWS( V ), ALLEXCEPT( V, V[Set Value 1] ) ) * ( V[Actual Value 1] - WAvg ) ^ 2
    )
VAR Den =
    SUMX(
        ALL( V ),
        CALCULATE( COUNTROWS( V ), ALLEXCEPT( V, V[Set Value 1] ) )
    )
VAR WVariance =
    DIVIDE( Num, Den )
RETURN 
    SQRT( WVariance )
设定值2和实际值2的加权平均值

WAvg2 = 
VAR Num =
    SUMX(
        ALL( V ),
        CALCULATE( COUNTROWS( V ), ALLEXCEPT( V, V[Set Value 2] ) ) * V[Actual Value 2]
    )
VAR Den =
    SUMX(
        ALL( V ),
        CALCULATE( COUNTROWS( V ), ALLEXCEPT( V, V[Set Value 2] ) )
    )
RETURN
    DIVIDE( Num, Den )
WStdDev2 = 
VAR Num =
    SUMX(
        ALL( V ),
        VAR WAvg = [WAvg2]
        RETURN
            CALCULATE( COUNTROWS( V ), ALLEXCEPT( V, V[Set Value 2] ) ) * ( V[Actual Value 2] - WAvg ) ^ 2
    )
VAR Den =
    SUMX(
        ALL( V ),
        CALCULATE( COUNTROWS( V ), ALLEXCEPT( V, V[Set Value 2] ) )
    )
VAR WVariance =
    DIVIDE( Num, Den )
RETURN
    SQRT( WVariance )
设定值1和实际值1的加权标准偏差

WAvg1 = 
VAR Num =
    SUMX(
        ALL( V ),
        CALCULATE( COUNTROWS( V ), ALLEXCEPT( V, V[Set Value 1] ) ) * V[Actual Value 1]
    )
VAR Den =
    SUMX(
        ALL( V ),
        CALCULATE( COUNTROWS( V ), ALLEXCEPT( V, V[Set Value 1] ) )
    )
RETURN
    DIVIDE( Num, Den )
WStdDev1 = 
VAR Num =
    SUMX(
        ALL( V ),
        VAR WAvg = [WAvg1]
        RETURN
            CALCULATE( COUNTROWS( V ), ALLEXCEPT( V, V[Set Value 1] ) ) * ( V[Actual Value 1] - WAvg ) ^ 2
    )
VAR Den =
    SUMX(
        ALL( V ),
        CALCULATE( COUNTROWS( V ), ALLEXCEPT( V, V[Set Value 1] ) )
    )
VAR WVariance =
    DIVIDE( Num, Den )
RETURN 
    SQRT( WVariance )
设定值2和实际值2的加权标准偏差

WAvg2 = 
VAR Num =
    SUMX(
        ALL( V ),
        CALCULATE( COUNTROWS( V ), ALLEXCEPT( V, V[Set Value 2] ) ) * V[Actual Value 2]
    )
VAR Den =
    SUMX(
        ALL( V ),
        CALCULATE( COUNTROWS( V ), ALLEXCEPT( V, V[Set Value 2] ) )
    )
RETURN
    DIVIDE( Num, Den )
WStdDev2 = 
VAR Num =
    SUMX(
        ALL( V ),
        VAR WAvg = [WAvg2]
        RETURN
            CALCULATE( COUNTROWS( V ), ALLEXCEPT( V, V[Set Value 2] ) ) * ( V[Actual Value 2] - WAvg ) ^ 2
    )
VAR Den =
    SUMX(
        ALL( V ),
        CALCULATE( COUNTROWS( V ), ALLEXCEPT( V, V[Set Value 2] ) )
    )
VAR WVariance =
    DIVIDE( Num, Den )
RETURN
    SQRT( WVariance )
将这些公式应用于样本表,我们得到了这些结果


请同时发布您的预期输出。您可以将示例数据发布为机器可读的表格吗?将表格从power bi复制粘贴到此网站,然后粘贴到问题上就足够了。尽管非常感谢您的回答:但请参阅编辑1:因为我期待有所不同。如果我理解您的新请求,我会将解决方案添加到我的回答中。请检查结果是否符合您的预期。考虑到两对列,您能否澄清如何获得单个值?实际值1和实际值2包含两个完全不同的值范围,它们被视为同一类型的数据集。