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 creato 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òe 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).
Vedere anche