使用百分位数、Top n 和 Rank X 时的不同结果
Different results when using percentile, Top n and Rank X
https://1drv.ms/u/s!AiSlK-qGPwisrTl4Jr2O2_xlWYkc?e=cGwn2h
请帮忙,首先,Top N 和 rankx 给了我前 25% 不同的总和,我不知道为什么。
附上所用的公式
n前 25% =
VAR Rank_To_Find = COUNTROWS ( ALL (Sheet1) ) * 0.25
RETURN
计算 ( [总销售额] , FILTER ( Sheet1,[Rank]<= Rank_To_Find))
第 75 个百分位数及以上的销售额百分比(使用总销售额)=
VAR Percentile75 = PERCENTILEX.INC( Sheet1, Sheet1[Sales],0.75 )
RETURN
CALCULATE([总销售额],Sheet1[销售额] >= Percentile75 )
3) 总计前 25% =
var FirstQuart = ROUND(DIVIDE(COUNT(Sheet1[Sales]),4),0)
Return
CALCULATE([总销售额],TOPN(FirstQuart, Sheet1,Sheet1Sales],DESC))
所有人都产生了不同的价值。我在附件 link.
中有措施
其次,我一直在尝试获取总计金额的前 N 个订单。
例如,我的总销售额为 1,037,875 美元,我正在尝试获取构成第 75 个百分位及以上的销售额(即总和为 259,468)。
我用订单数(基于销量)做了前N个。
我想我需要使用 while 或 for 循环来完成它,但不知道如何去做。
附件是 link 示例数据文件,https://1drv.ms/u/s!AiSlK-qGPwisrTl4Jr2O2_xlWYkc?e=cGwn2h
谢谢
您计算的第 75 个百分位数的衡量指标是行数而非销售额。
让我们从您要实现的目标开始
要实现您正在尝试做的事情,您需要从查看行转移到考虑销售额的累计值。使用干净的数据集(即删除空白行),尝试以下操作。
查看您的数据集,我们正在尝试确定属于第 75 个百分位数的销售额。它们将加起来达到 259,468.89 的边界;
使用您现有的衡量标准按销售额对数据进行排名
Rank = RANKX (all(Sheet1) ,[Total sale])
添加一个度量来计算累计排名销售额
Cumulative Ranked Sale = CALCULATE([Total sale],FILTER(ALL(Sheet1),[Rank]<=MAXX(Sheet1,[Rank])))
现在您可以计算出第 75 个百分位的销售额,基于累计排名销售额高达 259,468.89。
Cumulative Sales In 75th Percentile =
VAR Percentile75 = CALCULATE([Total sale], All(Sheet1))*0.25
VAR cumulativeSalesIn75thPercentile = CALCULATE(
Sum(Sheet1[Sales]),
FILTER(
ALL(Sheet1),
[Cumulative Ranked Sale]<=Percentile75
)
)
RETURN cumulativeSalesIn75thPercentile
我在上图中添加了一个单独的度量来显示 Percentile 75 Boundary,但您的工作不需要这个,因为这是 Cumulative Sales 75th Percentile
中的一个变量
您需要注意,排名会给您多个具有相同排名的值,这会影响您的结果。您还需要考虑在 75% 的边界上发生什么,因为断点不会精确。
您可以进一步扩展此逻辑以使用其他措施覆盖第 50-75 个百分位数
Cumulative Sales 50-75th Percentile =
VAR Percentile75 = CALCULATE([Total sale], All(Sheet1))*0.25
VAR Percentile50 = CALCULATE([Total sale], All(Sheet1))*0.5
VAR cumulativeSalesIn50thTo75thPercentile = CALCULATE(
Sum(Sheet1[Sales]),
FILTER(
ALL(Sheet1),
[Cumulative Ranked Sale]>Percentile75 &&
[Cumulative Ranked Sale]<=Percentile50
)
)
RETURN cumulativeSalesIn50thTo75thPercentile
返回到您现有的工作方式
在我们开始之前,附加的示例数据使 RowCount 和 PERCENTILEX.INC 不准确。您有 251 个订单,但是您有 685 行,其余为空白行。保持您的样本数据清洁,将有助于您未来的 DAX 分析。
您的“nTop 25%”度量正在计算行数(不是金额),并为您提供前 25% 行的销售额总和,按销售额排序。变量
VAR Rank_To_Find = COUNTROWS ( ALL (Sheet1) ) * 0.25
等于 171.25,因为您有 685 行,因此 685*0.25 = 171.25。因此,使用此度量,您将计算前 171 行的总销售额,按销售额降序排列,结果为 932,906.354 美元。
使用“第 75 个百分位及以上的销售额百分比(使用总销售额)”衡量标准,PERCENTILE.INC 是您找到第 75 个百分位的行数,而不是累积值。尝试将 k 值更改为低于 60% 的值(例如 PERCENTILEX.INC( Sheet1, Sheet1[Sales],0.60
),您将 return 总销售额。
https://1drv.ms/u/s!AiSlK-qGPwisrTl4Jr2O2_xlWYkc?e=cGwn2h
请帮忙,首先,Top N 和 rankx 给了我前 25% 不同的总和,我不知道为什么。
附上所用的公式
n前 25% = VAR Rank_To_Find = COUNTROWS ( ALL (Sheet1) ) * 0.25 RETURN 计算 ( [总销售额] , FILTER ( Sheet1,[Rank]<= Rank_To_Find))
第 75 个百分位数及以上的销售额百分比(使用总销售额)= VAR Percentile75 = PERCENTILEX.INC( Sheet1, Sheet1[Sales],0.75 ) RETURN CALCULATE([总销售额],Sheet1[销售额] >= Percentile75 )
3) 总计前 25% = var FirstQuart = ROUND(DIVIDE(COUNT(Sheet1[Sales]),4),0) Return CALCULATE([总销售额],TOPN(FirstQuart, Sheet1,Sheet1Sales],DESC))
所有人都产生了不同的价值。我在附件 link.
中有措施其次,我一直在尝试获取总计金额的前 N 个订单。
例如,我的总销售额为 1,037,875 美元,我正在尝试获取构成第 75 个百分位及以上的销售额(即总和为 259,468)。
我用订单数(基于销量)做了前N个。
我想我需要使用 while 或 for 循环来完成它,但不知道如何去做。
附件是 link 示例数据文件,https://1drv.ms/u/s!AiSlK-qGPwisrTl4Jr2O2_xlWYkc?e=cGwn2h
谢谢
您计算的第 75 个百分位数的衡量指标是行数而非销售额。
让我们从您要实现的目标开始
要实现您正在尝试做的事情,您需要从查看行转移到考虑销售额的累计值。使用干净的数据集(即删除空白行),尝试以下操作。
查看您的数据集,我们正在尝试确定属于第 75 个百分位数的销售额。它们将加起来达到 259,468.89 的边界;
使用您现有的衡量标准按销售额对数据进行排名
Rank = RANKX (all(Sheet1) ,[Total sale])
添加一个度量来计算累计排名销售额
Cumulative Ranked Sale = CALCULATE([Total sale],FILTER(ALL(Sheet1),[Rank]<=MAXX(Sheet1,[Rank])))
现在您可以计算出第 75 个百分位的销售额,基于累计排名销售额高达 259,468.89。
Cumulative Sales In 75th Percentile =
VAR Percentile75 = CALCULATE([Total sale], All(Sheet1))*0.25
VAR cumulativeSalesIn75thPercentile = CALCULATE(
Sum(Sheet1[Sales]),
FILTER(
ALL(Sheet1),
[Cumulative Ranked Sale]<=Percentile75
)
)
RETURN cumulativeSalesIn75thPercentile
您需要注意,排名会给您多个具有相同排名的值,这会影响您的结果。您还需要考虑在 75% 的边界上发生什么,因为断点不会精确。
您可以进一步扩展此逻辑以使用其他措施覆盖第 50-75 个百分位数
Cumulative Sales 50-75th Percentile =
VAR Percentile75 = CALCULATE([Total sale], All(Sheet1))*0.25
VAR Percentile50 = CALCULATE([Total sale], All(Sheet1))*0.5
VAR cumulativeSalesIn50thTo75thPercentile = CALCULATE(
Sum(Sheet1[Sales]),
FILTER(
ALL(Sheet1),
[Cumulative Ranked Sale]>Percentile75 &&
[Cumulative Ranked Sale]<=Percentile50
)
)
RETURN cumulativeSalesIn50thTo75thPercentile
返回到您现有的工作方式
在我们开始之前,附加的示例数据使 RowCount 和 PERCENTILEX.INC 不准确。您有 251 个订单,但是您有 685 行,其余为空白行。保持您的样本数据清洁,将有助于您未来的 DAX 分析。
您的“nTop 25%”度量正在计算行数(不是金额),并为您提供前 25% 行的销售额总和,按销售额排序。变量
VAR Rank_To_Find = COUNTROWS ( ALL (Sheet1) ) * 0.25
等于 171.25,因为您有 685 行,因此 685*0.25 = 171.25。因此,使用此度量,您将计算前 171 行的总销售额,按销售额降序排列,结果为 932,906.354 美元。
使用“第 75 个百分位及以上的销售额百分比(使用总销售额)”衡量标准,PERCENTILE.INC 是您找到第 75 个百分位的行数,而不是累积值。尝试将 k 值更改为低于 60% 的值(例如 PERCENTILEX.INC( Sheet1, Sheet1[Sales],0.60
),您将 return 总销售额。