根据下一行的总和计算累计百分比
Calculate cumulative % based on sum of next row
我想根据以下公式计算百分比。它有点小技巧,我有点卡住了,不知道该怎么做。如果有人能帮忙,谢谢。
我在下面 table 中有几条记录是按范围
分组的
Range Count
0-10 50
10-20 12
20-30 9
30-40 0
40-50 0
50-60 1
60-70 4
70-80 45
80-90 16
90-100 7
Other 1
我想再增加一列,其中包含基于下一行总和与总行数 (145) 之和的累积百分比,如下所示
Range Count Cumulative % of Range
0-10 50 34.5% (which is 50/145)
10-20 12 42.7% (which is 62/145)
20-30 9 48.9% (which is 71/145)
30-40 0 48.9% (which is 71/145)
40-50 0 48.9% (which is 71/145)
50-60 1 49.6% (which is 72/145)
60-70 4 52.4% (which is 76/145)
70-80 45 83.4% (which is 121/145)
80-90 16 94.5% (which is 137/145)
90-100 7 99.3% (which is 144/145)
Other 1 100.0% (which is 145/145)
对于累积计算,总是需要排序。无论如何,如果您在“范围”列中给定的值是真实的 - 这也将用于此目的,因为此字段的升序保持数据按预期顺序排列。执行以下操作以获得所需的输出。
创建以下度量-
count_percentage =
VAR total_of_count =
CALCULATE(
SUM(your_table_name[Count]),
ALL(your_table_name)
)
VAR cumulative_count =
CALCULATE(
SUM(your_table_name[Count]),
FILTER(
ALL(your_table_name),
your_table_name[Range] <= MIN(your_table_name[Range])
)
)
RETURN cumulative_count/total_of_count
这里是最终输出-
按照以下步骤获取答案。如果您觉得解决方案有帮助,请投票并接受答案。
第一步 - - 从范围列创建索引列。我已将“其他”值替换为 999。您可以将其替换为更大的数字,这不太可能出现在您的数据集中。将这个新列转换为整数
Sort Column = if(Sickness[Range] = "Other",9999,CONVERT(LEFT(Sickness[Range],SEARCH("-",Sickness[Range],1,LEN(Sickness[Range])+1)-1),INTEGER))
第 2 步 - 使用以下度量获取值:
Measure =
var RunningTotal = CALCULATE(SUM(Sickness[Count]),FILTER(all(Sickness),Sickness[Sort Column] <= MAX(Sickness[Sort Column])))
var totalSum = CALCULATE(SUM(Sickness[Count]),ALL())
Return
RunningTotal/totalSum
下面是完全符合您要求的输出。
我想根据以下公式计算百分比。它有点小技巧,我有点卡住了,不知道该怎么做。如果有人能帮忙,谢谢。
我在下面 table 中有几条记录是按范围
分组的Range Count 0-10 50 10-20 12 20-30 9 30-40 0 40-50 0 50-60 1 60-70 4 70-80 45 80-90 16 90-100 7 Other 1
我想再增加一列,其中包含基于下一行总和与总行数 (145) 之和的累积百分比,如下所示
Range Count Cumulative % of Range 0-10 50 34.5% (which is 50/145) 10-20 12 42.7% (which is 62/145) 20-30 9 48.9% (which is 71/145) 30-40 0 48.9% (which is 71/145) 40-50 0 48.9% (which is 71/145) 50-60 1 49.6% (which is 72/145) 60-70 4 52.4% (which is 76/145) 70-80 45 83.4% (which is 121/145) 80-90 16 94.5% (which is 137/145) 90-100 7 99.3% (which is 144/145) Other 1 100.0% (which is 145/145)
对于累积计算,总是需要排序。无论如何,如果您在“范围”列中给定的值是真实的 - 这也将用于此目的,因为此字段的升序保持数据按预期顺序排列。执行以下操作以获得所需的输出。
创建以下度量-
count_percentage =
VAR total_of_count =
CALCULATE(
SUM(your_table_name[Count]),
ALL(your_table_name)
)
VAR cumulative_count =
CALCULATE(
SUM(your_table_name[Count]),
FILTER(
ALL(your_table_name),
your_table_name[Range] <= MIN(your_table_name[Range])
)
)
RETURN cumulative_count/total_of_count
这里是最终输出-
按照以下步骤获取答案。如果您觉得解决方案有帮助,请投票并接受答案。
第一步 - - 从范围列创建索引列。我已将“其他”值替换为 999。您可以将其替换为更大的数字,这不太可能出现在您的数据集中。将这个新列转换为整数
Sort Column = if(Sickness[Range] = "Other",9999,CONVERT(LEFT(Sickness[Range],SEARCH("-",Sickness[Range],1,LEN(Sickness[Range])+1)-1),INTEGER))
第 2 步 - 使用以下度量获取值:
Measure =
var RunningTotal = CALCULATE(SUM(Sickness[Count]),FILTER(all(Sickness),Sickness[Sort Column] <= MAX(Sickness[Sort Column])))
var totalSum = CALCULATE(SUM(Sickness[Count]),ALL())
Return
RunningTotal/totalSum
下面是完全符合您要求的输出。