TopPercent (DMX)
适用于: SQL Server Analysis Services
TopPercent 函数按排名递减的顺序返回其累积总计至少为指定百分比的表的最多行。
语法
TopPercent(<table expression>, <rank expression>, <percent>)
应用于
返回表(例如 <表列引用>)或返回表的函数的表达式。
返回类型
<表表达式>
注解
TopPercent 函数根据每行排名表达式>参数的<计算值返回排名最高的行,以便排名表达式>值的总和<至少是百<分比参数指定的给定百分比>。 TopPercent 返回尽可能少的元素数,同时仍满足指定的百分比值。
示例
以下示例针对使用 基本数据挖掘教程生成的关联模型创建预测查询。
若要了解 TopPercent 的工作原理,最好先执行仅返回嵌套表的预测查询。
SELECT Predict ([Association].[v Assoc Seq Line Items], INCLUDE_STATISTICS, 10)
FROM
[Association]
NATURAL PREDICTION JOIN
SELECT (SELECT 'Women''s Mountain Shorts' as [Model]) AS [v Assoc Seq Line Items]) AS t
注意
在本示例中,作为输入而提供的值包含一个单引号;因此,必须通过在该值前面加一个单引号来进行转义。 如果不熟悉有关插入转义符的语法,则您可以使用预测查询生成器创建查询。 从下拉列表中选择值时,会为您插入所需的转义符。 有关详细信息,请参阅 数据挖掘设计器中的“创建单一实例查询”。
示例结果:
模型 | $SUPPORT | $PROBABILITY | $ADJUSTEDPROBABILITY |
---|---|---|---|
Sport-100 | 4334 | 0.291283016 | 0.252695851 |
Water Bottle | 2866 | 0.192620472 | 0.175205052 |
Patch kit | 2113 | 0.142012232 | 0.132389356 |
Mountain Tire Tube | 1992 | 0.133879965 | 0.125304948 |
Mountain-200 | 1755 | 0.117951475 | 0.111260823 |
Road Tire Tube | 1588 | 0.106727603 | 0.101229538 |
Cycling Cap | 1473 | 0.098998589 | 0.094256014 |
Fender Set - Mountain | 1415 | 0.095100477 | 0.090718432 |
Mountain Bottle Cage | 1367 | 0.091874454 | 0.087780332 |
Road Bottle Cage | 1195 | 0.080314537 | 0.077173962 |
TopPercent 函数获取此查询的结果,并返回具有最大值(总和到指定百分比)的行。
SELECT
TopPercent
(
Predict ([Association].[v Assoc Seq Line Items],INCLUDE_STATISTICS,10),
$SUPPORT,
50)
FROM
[Association]
NATURAL PREDICTION JOIN
(SELECT (SELECT 'Women''s Mountain Shorts' as [Model]) AS [v Assoc Seq Line Items]) AS t
TopPercent 函数的第一个参数是表列的名称。 在此示例中,嵌套表通过调用 Predict 函数并使用 INCLUDE_STATISTICS 参数返回。
TopPercent 函数的第二个参数是用于对结果进行排序的嵌套表中的列。 在此示例中,INCLUDE_STATISTICS 选项返回 $SUPPORT、$PROBABILTY 和 $ADJUSTED PROBABILITY 列。 此示例使用 $SUPPORT,因为支持值不带有小数,所以很容易进行验证。
TopPercent 函数的第三个参数将百分比指定为双精度。 若要获取总值为支持总数的 50% 的最前面的产品行,请键入 50。
示例结果:
模型 | $SUPPORT | $PROBABILITY | $ADJUSTEDPROBABILITY |
---|---|---|---|
Sport-100 | 4334 | 0.29... | 0.25... |
Water Bottle | 2866 | 0.19... | 0.17... |
Patch kit | 2113 | 0.14... | 0.13... |
Mountain Tire Tube | 1992 | 0.133... | 0.12... |
请注意 ,此示例仅用于说明 TopPercent 的用法。 运行此查询可能需要很长时间,具体取决于数据集的大小。
警告
在用于计算百分比的值包含负数时,用于 TOPPERCENT 和 BOTTOMPERCENT 的 MDX 函数可能会生成意外结果。 此行为并不影响 DMX 函数。 有关详细信息,请参阅 BottomPercent (MDX)。