TopCount (DMX)

Retourne le nombre spécifié de lignes les plus hautes dans l'ordre décroissant, comme indiqué par une expression.

Syntaxe

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

Application

Expression qui retourne une table, comme une <référence de colonne de table>, ou fonction qui retourne une table.

Type de valeur renvoyé

<expression de table>

Notes

La valeur fournie par l'argument <rank expression> détermine l'ordre décroissant du classement des lignes indiquées dans l'argument <table expression>, et le nombre de lignes les plus hautes qui est spécifié dans l'argument <count> est retourné.

La fonction TopCount a été introduite initialement dans SQL Server 2000 pour activer les prédictions associatives et, en général, produit les mêmes résultats qu'une instruction qui inclut des clauses SELECT TOP et ORDER BY. Dans SQL Server 2005 et SQL Server 2008, vous obtiendrez de meilleures performances pour les prédictions associatives si vous utilisez la fonction Predict (DMX), qui prend en charge la spécification de plusieurs prédictions à retourner. 

Toutefois, il y a des situations où l'utilisation de TopCount peut encore être nécessaire. Par exemple, DMX ne prend pas en charge le qualificateur TOP dans une instruction sub-SELECT. La fonction PredictHistogram (DMX) ne prend pas non plus en charge l'ajout de TOP.

Exemples

Les exemples suivants sont des requêtes de prédiction sur le modèle d'association que vous concevez à l'aide du Didacticiel sur l'exploration de données de base. Les requêtes retournent les mêmes résultats, mais le premier exemple utilise TopCount, tandis que le deuxième exemple utilise la fonction Predict.

Pour comprendre comment TopCount fonctionne, il peut s'avérer utile d'exécuter en premier lieu une requête de prédiction qui retourne uniquement la table imbriquée.

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

Notes

Dans cet exemple, la valeur fournie en tant qu'entrée contient un guillemet simple et doit donc être placée dans une séquence d'échappement en la préfaçant avec un autre guillemet simple. Si vous n'êtes pas certain de la syntaxe permettant d'insérer un caractère d'échappement, vous pouvez utiliser le Générateur de requêtes de prédiction pour créer la requête. Lorsque vous sélectionnez la valeur dans la liste déroulante, le caractère d'échappement requis est inséré pour vous. Pour plus d'informations, consultez Procédure : créer une requête singleton dans le Concepteur d'exploration de données.

Résultats de l'exemple :

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

La fonction TopCount prend les résultats de cette requête et retourne le nombre spécifié de lignes de valeur la plus petite.

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

Le premier argument de la fonction TopCount est le nom d'une colonne de table. Dans cet exemple, la table imbriquée est retournée en appelant la fonction Predict et en utilisant l'argument INCLUDE_STATISTICS.

Le deuxième argument pour la fonction TopCount est la colonne dans la table imbriquée que vous utilisez pour classer les résultats. Dans cet exemple, l'option INCLUDE_STATISTICS retourne les colonnes $SUPPORT, $PROBABILTY et $ADJUSTED PROBABILITY. Cet exemple utilise $SUPPORT pour classer les résultats.

Le troisième argument de la fonction TopCount spécifie le nombre de lignes à retourner, sous la forme d'un entier. Pour obtenir les trois produits supérieurs, tel que classé par $SUPPORT, tapez 3.

Résultats de l'exemple :

Modèle

$SUPPORT

$PROBABILITY

$ADJUSTEDPROBABILITY

Sport-100

4334

0.29…

0.25…

Water Bottle

2866

0.19…

0.17…

Patch kit

2113

0.14…

0.13…

Toutefois, ce type de requête peut affecter les performances dans un environnement de production. Cela est dû au fait que la requête retourne un ensemble de toutes les prédictions de l'algorithme, trie ces prédictions et retourne les 3 prédictions supérieures.

L'exemple suivant fournit une autre instruction qui retourne les mêmes résultats mais s'exécute beaucoup plus rapidement. Cet exemple remplace TopCount par la fonction Predict, qui accepte plusieurs prédictions comme argument. Cet exemple utilise également le mot clé $SUPPORT pour extraire directement la colonne de table imbriquée.

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

Les résultats contiennent les 3 prédictions supérieures triées par la valeur de support. Vous pouvez remplacer $SUPPORT par $PROBABILITY ou $ADJUSTED_PROBABILITY pour retourner des prédictions classées par probabilité ou par probabilité ajustée. Pour plus d'informations, consultez Predict (DMX).