达克斯(Dax)度量-有条件的分组总数的百分比之和

时间:2020-07-30 13:07:02

标签: dax

为简单起见,我有以下虚拟数据:

id  val
1   5
1   30
1   50
1   15
2   120
2   60
2   10
2   10

我想要的输出如下:

id  SUM_GT_10%
1   95%
2   90%

SUM_GT_10%可以通过以下步骤获得:

  1. 计算每个id的val之和
  2. 将val除以1
  3. 如果2> 10%,则为2的总和

使用示例数据,对于id 1,val的总和为100,对于id 2,val的总和为200,因此我们将获得以下附加列:

id  val   1      2   
1   5     100    5%
1   30    100    30%
1   50    100    50% 
1   15    100    15%
2   120   200    60%
2   60    200    30%
2   10    200    5%
2   10    200    5%

我们的最终输出(第3步)将是2的总和,其中2> 10%:

id   SUM_GT_10%
1    95%
2    90%

我当然不在乎中间的列,而只是在乎最终的输出。

1 个答案:

答案 0 :(得分:1)

James,您可能想在度量中创建一个临时表,然后对其结果求和:

tbl_SumVAL = 
    var ThisId = MAX(tbl_VAL[id])
    var temp = 
        FILTER(
            SELECTCOLUMNS(tbl_VAL, "id", tbl_VAL[id], "GT%", 
                tbl_VAL[val] / SUMX(FILTER(tbl_VAL, tbl_VAL[id] = ThisId), tbl_VAL[val])), 
            [GT%] > 0.1
        )
    return
        SUMX(temp, [GT%])

临时表基本上是重新创建您描述的两个步骤(将“原始”值除以每个ID的所有值的总和),然后仅保留那些大于0.1的值。请注意,如果您的ID不是数字,则需要将MAX(tbl_VAL[id])替换为SELECTEDVALUE(tbl_VAL[id])

最终结果看起来像这样-

enter image description here

另外,如果id是数字,请确保将id字段设置为“不汇总”-

enter image description here

相关问题