TopSum (DMX)
适用于: SQL Server Analysis Services
以降序形式返回表中最前面的几行,这些行的累积合计至少达到了指定值。
语法
TopSum(<table expression>, <rank expression>, <sum>)
应用于
返回表(例如 <表列引用>)或返回表的函数的表达式。
返回类型
<表表达式>
注解
TopSum 函数根据每行的排名表达式>参数的<计算值返回排名最高的行,以便排名表达式>值的总和至少是总和><参数指定的<给定总计。 TopSum 返回尽可能少的元素数,同时仍满足指定的总和值。
示例
以下示例针对使用 基本数据挖掘教程生成的关联模型创建预测查询。
若要了解 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 |
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。
示例结果:
模型 | $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 的用法。 运行此查询可能需要很长时间,具体取决于数据集的大小。