为简单起见,我有以下虚拟数据:
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%可以通过以下步骤获得:
使用示例数据,对于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%
我当然不在乎中间的列,而只是在乎最终的输出。
答案 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])
。
最终结果看起来像这样-
另外,如果id
是数字,请确保将id
字段设置为“不汇总”-