TopPercent (DMX)

La funzione TopPercent restituisce, in ordine di rango decrescente, le prime righe di una tabella il cui totale cumulativo corrisponde almeno a una percentuale specificata.

Sintassi

TopPercent(<table expression>, <rank expression>, <percent>)

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

La funzione TopPercent restituisce le prime righe in ordine di rango decrescente, in base al valore valutato dell'argomento <rank expression> per ogni riga, di modo che la somma dei valori di <rank expression> corrisponda almeno alla percentuale specificata dall'argomento <percent>. TopPercent restituisce il numero più piccolo di elementi che permette di raggiungere il valore percentuale specificato.

Esempi

Nell'esempio seguente viene creata una query di stima sul modello di associazione creato mediante l'Esercitazione di base sul data mining.

Per comprendere il funzionamento di TopPercent, 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 TopPercent utilizza i risultati di questa query e restituisce le righe con i valori più grandi che vengono sommate alla percentuale specificata.

SELECT 
TopPercent
    (
    Predict ([Association].[v Assoc Seq Line Items],INCLUDE_STATISTICS,10),
    $SUPPORT,
    50)
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 TopPercent è 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 TopPercent è 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 poiché i valori di supporto non sono frazionari e pertanto sono più facili da verificare.

Il terzo argomento della funzione TopPercent specifica la percentuale, come valore Double. Per ottenere le righe dei primi prodotti che rappresentano il 50 percento del supporto totale, digitare 50.

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…

Mountain Tire Tube

1992

0.133…

0.12…

Nota   Questo esempio è fornito solo per illustrare l'utilizzo di TopPercent. A seconda della dimensione dell'insieme di dati, questa query potrebbe impiegare molto tempo per l'esecuzione.