TopCount (DMX)

Restituisce il numero specificato di righe a partire dall'alto, in ordine di rango decrescente secondo quanto specificato da una determinata espressione.

Sintassi

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

Si applica a

Espressione che restituisce una tabella, come <table column reference> oppure una funzione che restituisce una tabella.

Tipo restituito

<espressione di tabella>

Osservazioni

Il valore specificato dall'argomento <rank expression> determina l'ordine di rango decrescente per le righe specificate nell'argomento <table expression> e viene restituito il numero di righe specificato nell'argomento <count> a partire dall'alto.

La funzione TopCount è stata introdotta originalmente in SQL Server 2000 per attivare stime associative e in generale produce gli stessi risultati di un'istruzione che include le clausole SELECT TOP e ORDER BY In SQL Server 2005 e SQL Server 2008, si ottengono prestazioni migliori per le stime associative se si utilizza la funzione Predict (DMX) che supporta la specifica di un numero di stime da restituire. 

Ci sono tuttavia situazioni in cui potrebbe essere ancora necessario utilizzare TopCount. Ad esempio, DMX non supporta il qualificatore TOP in un'istruzione sub-SELECT. Anche la funzione PredictHistogram (DMX) non supporta l'utilizzo di TOP.

Esempi

Gli esempi seguenti costituiscono query di stima sul modello di associazione compilato mediante l'Esercitazione di base sul data mining. Le query restituiscono gli stessi risultati, ma nel primo esempio si utilizza TopCount e nel secondo si utilizza la funzione Predict.

Per comprendere il funzionamento di TopCount, può risultare utile eseguire prima una query di stima che restituisca solo la tabella nidificata.

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

Nota

In questo esempio il valore fornito come input contiene una virgoletta singola, e pertanto è necessario utilizzare il carattere di escape preceduto da un'altra virgoletta singola. Se non si è certi della sintassi per l'inserimento di un carattere di escape, è possibile utilizzare il generatore delle query di stima per creare la query. Quando si seleziona il valore dall'elenco a discesa, viene automaticamente inserito il carattere di escape necessario. Per ulteriori informazioni, vedere Procedura: Creazione di una query singleton nella Progettazione modelli di data mining.

Risultati dell'esempio:

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 funzione TopCount utilizza i risultati di questa query e restituisce il numero specificato di righe con i valori più piccoli.

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

Il primo argomento della funzione TopCount è il nome di una colonna della tabella. In questo esempio la tabella nidificata viene restituita chiamando la funzione Predict e utilizzando l'argomento INCLUDE_STATISTICS.

Il secondo argomento della funzione TopCount è la colonna della tabella nidificata utilizzata per ordinare i risultati. In questo esempio l'opzione INCLUDE_STATISTICS restituisce le colonne $SUPPORT, $PROBABILTY e $ADJUSTED PROBABILITY. In questo esempio viene utilizzato $ SUPPORT per classificare i risultati.

Il terzo argomento della funzione TopCount specifica il numero di righe da restituire, sotto forma di valore integer. Per ottenere i primi tre prodotti, come ordinato da $SUPPORT, digitare 3.

Risultati dell'esempio:

Modello

$SUPPORT

$PROBABILITY

$ADJUSTEDPROBABILITY

Sport-100

4334

0.29…

0.25…

Water Bottle

2866

0.19…

0.17…

Patch kit

2113

0.14…

0.13…

Tuttavia, questo tipo di query può influire sulle prestazioni nell'impostazione di un ambiente di produzione perché restituisce un set di tutte le stime dall'algoritmo, ordina queste stime e restituisce le prime tre.

Nell'esempio seguente viene fornita un'istruzione alternativa che restituisce gli stessi risultati ma in modo significativamente più veloce. In questo esempio viene sostituito TopCount con la funzione Predict che accetta un numero di stime come argomento. Viene inoltre utilizzata la parola chiave $SUPPORT per recuperare direttamente la colonna della tabella nidificata.

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

I risultati contengono le prime tre stime ordinate in base al valore di supporto. È possibile sostituire $SUPPORT con $PROBABILITY o $ADJUSTED_PROBABILITY per restituire stime classificate in base alla probabilità o alla probabilità adattata. Per ulteriori informazioni, vedere Predict (DMX).