TopSum (DMX)

以降序形式返回表中最前面的几行,这些行的累积合计至少要达到指定的值。

语法

TopSum(<table expression>, <rank expression>, <sum>)

适用范围

一个返回表的表达式,如 <table column reference>,或一个返回表的函数。

返回类型

<table expression>

注释

TopSum 函数根据每行的 <rank expression> 参数的计算结果值,以降序形式返回最前面的几行,以使 <rank expression> 各值之和至少达到 <sum> 参数指定的总数。TopSum 在满足指定总和值的同时,尽量返回最少数量的元素。

示例

下面的示例创建针对您使用数据挖掘基础教程创建的关联模型的预测查询。

若要了解 TopSum 的工作原理,请先执行只返回嵌套表的预测查询,这可能会很有帮助。

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
注意注意

在本示例中,作为输入而提供的值包含一个单引号;因此,必须通过在该值前面加一个单引号来进行转义。如果不熟悉有关插入转义符的语法,则您可以使用预测查询生成器创建查询。从下拉列表中选择值时,会为您插入所需的转义符。有关详细信息,请参阅如何在数据挖掘设计器中创建单独查询

示例结果:

Model

$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

TopSum 函数可接受此查询的结果,并返回总值为指定计数的具有最大值的行。

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

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

TopSum 函数的第二个参数是您用于对结果进行排序的嵌套表中的列。在此示例中,INCLUDE_STATISTICS 选项返回 $SUPPORT、$PROBABILTY 和 $ADJUSTED PROBABILITY 列。此示例使用 $PROBABILITY 返回概率总值至少为 50% 的行。

TopSum 函数的第三个参数指定目标和(双精度)。若要获取概率总值为 50% 的最前面的产品行,请键入 .5。

示例结果:

Model

$SUPPORT

$PROBABILITY

$ADJUSTEDPROBABILITY

Sport-100

4334

0.29…

0.25…

Water Bottle

2866

0.19…

0.17…

Patch kit

2113

0.14…

0.13…

注意注意

提供本示例的目的仅在于说明 [TopSum] 的用法。运行此查询可能需要很长时间,具体取决于数据集的大小。