TopCount (DMX)

适用于: SQL Server Analysis Services

按指定数量返回最前面的行,并以表达式指定的降序排列。

语法

  
TopCount(<table expression>, <rank expression>, <count>)  

应用于

返回表(例如 <表列引用>)或返回表的函数的表达式。

返回类型

<表表达式>

注解

排名表达式参数提供<的值确定表表达式>>参数中<提供的行的排名的递减顺序,以及返回计数>参数中指定的<最顶层行数。

最初引入了 TopCount 函数以启用关联预测,通常生成与包含 SELECT TOPORDER BY 子句的语句相同的结果。 如果使用 Predict (DMX) 函数,则获得更好的关联预测性能,该函数支持指定要返回的多个预测。

但是,在某些情况下,可能需要使用 TopCount。 例如,DMX 不支持子选择语句中的 TOP 限定符。 PredictHistogram (DMX) 函数也不支持添加 TOP

示例

以下示例是针对使用 基本数据挖掘教程生成的关联模型的预测查询。 查询返回相同的结果,但第一个示例使用 TopCount,第二个示例使用 Predict 函数。

若要了解 TopCount 的工作原理,最好先执行仅返回嵌套表的预测查询。

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

TopCount 函数获取此查询的结果,并返回指定数目的最小值行。

SELECT   
TopCount  
    (  
    Predict ([Association].[v Assoc Seq Line Items],INCLUDE_STATISTICS,10),  
    $SUPPORT,  
    3)  
FROM   
     [Association]  
NATURAL PREDICTION JOIN  
(SELECT (SELECT 'Women''s Mountain Shorts' as [Model]) AS [v Assoc Seq Line Items]) AS t  

TopCount 函数的第一个参数是表列的名称。 在此示例中,嵌套表通过调用 Predict 函数并使用 INCLUDE_STATISTICS 参数返回。

TopCount 函数的第二个参数是用于对结果进行排序的嵌套表中的列。 在此示例中,INCLUDE_STATISTICS 选项返回 $SUPPORT、$PROBABILTY 和 $ADJUSTED PROBABILITY 列。 该示例使用 $SUPPORT 对结果进行排名。

TopCount 函数的第三个参数指定要作为整数返回的行数。 若要获取按 $SUPPORT 排序的前三个产品,请键入 3。

示例结果:

型号 $SUPPORT $PROBABILITY $ADJUSTEDPROBABILITY
Sport-100 4334 0.29... 0.25...
Water Bottle 2866 0.19... 0.17...
Patch kit 2113 0.14... 0.13...

但是,此查询类型可能会影响生产设置的性能。 这是因为此查询返回算法的所有预测集,对这些预测进行排序并返回前 3 个产品。

以下示例提供返回相同结果但执行速度明显加快的替代语句。 本示例将 TopCount 替换为 Predict 函数,该函数接受大量预测作为参数。 此示例还使用 $SUPPORT 关键字直接检索嵌套表列。

SELECT Predict ([Association].[v Assoc Seq Line Items], INCLUDE_STATISTICS, 3, $SUPPORT)  

结果包含按支持值排序的前 3 个预测。 您可以将 $SUPPORT 替换为 $PROBABILITY 或 $ADJUSTED_PROBABILITY,以便返回按概率或调整后的概率排名的预测。 有关详细信息,请参阅 Predict (DMX)

另请参阅

函数 (DMX)
通用预测函数 (DMX)
BottomCount (DMX)
TopPercent (DMX)
TopSum (DMX)