Compartir a través de


TopCount (DMX)

Devuelve el número especificado de filas superiores en orden decreciente de rango, como lo especifica una expresión.

Sintaxis

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

Se aplica a

Una expresión que devuelve una tabla, como <table column reference>, o una función que devuelve una tabla.

Tipo devuelto

<table expression>

Notas

El valor que proporciona el argumento <rank expression> determina el orden decreciente de rango para las filas que proporciona el argumento <table expression>, y se devuelve el número de filas superiores que especifica el argumento <count>.

La función TopCount se incluyó originalmente en SQL Server 2000 para habilitar las predicciones asociativas y, en general, genera los mismos resultados que una instrucción que incluye las cláusulas SELECT TOP y ORDER BY En SQL Server 2005 y SQL Server 2008, obtendrá el mejor rendimiento para las predicciones asociativas si utiliza la función Predict (DMX), que permite especificar varias predicciones que devolver.

Sin embargo, hay situaciones en las que todavía podría necesitar utilizar TopCount. Por ejemplo, DMX no admite el certificador TOP en una instrucción sub-select. La función PredictHistogram (DMX) tampoco admite la adición de TOP.

Ejemplos

En los ejemplos siguientes se crean consultas de predicción con el modelo de asociación que se genera utilizando Tutorial básico de minería de datos. Las consultas devuelven los mismos resultados, pero el primer ejemplo utiliza TopCounty el segundo usa la función Predict.

Para entender cómo funciona TopCount, puede ser útil ejecutar primero una consulta de predicción que devuelva sólo la tabla anidada.

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]

En este ejemplo, el valor proporcionado como entrada contiene una comilla sencilla y, por consiguiente, se debe anteponer como carácter de escape otra comilla sencilla. Si duda de la sintaxis para insertar un carácter de escape, puede utilizar el generador de consultas de predicción para crear la consulta. Al seleccionar el valor en la lista desplegable, se inserta el carácter de escape necesario. Para obtener más información, vea Cómo crear una consulta singleton en el Diseñador de minería de datos.

Resultados del ejemplo:

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 función TopCount toma los resultados de esta consulta y devuelve el número especificado de filas con los valores menores.

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

El primer argumento de la función TopCount es el nombre de una columna de la tabla. En este ejemplo, la tabla anidada se devuelve llamando a la función Predict y utilizando el argumento INCLUDE_STATISTICS.

El segundo argumento de la función TopCount es la columna de la tabla anidada que se utiliza para ordenar los resultados. En este ejemplo, la opción INCLUDE_STATISTICS devuelve las columnas $SUPPORT, $PROBABILTY y $ADJUSTED PROBABILITY. En este ejemplo se utiliza $SUPPORT para clasificar los resultados.

El tercer argumento de la función TopCount especifica el número de filas que devolver, como un entero. Para obtener los tres productos de la parte superior, ordenados por $SUPPORT, se escribe 3.

Resultados del ejemplo:

Model

$SUPPORT

$PROBABILITY

$ADJUSTEDPROBABILITY

Sport-100

4334

0.29…

0.25…

Water Bottle

2866

0.19…

0.17…

Patch kit

2113

0.14…

0.13…

Sin embargo, este tipo de consulta podría afectar al rendimiento en una configuración de producción. Esto se debe a que la consulta devuelve un conjunto de todas las predicciones del algoritmo, ordena estas predicciones y devuelve las tres primeras.

En el ejemplo siguiente se proporciona una instrucción alternativa que devuelve los mismos resultados pero se ejecuta significativamente más rápido. En este ejemplo se reemplaza [TopCount] con la función [Predict], que acepta varias predicciones como un argumento. Este ejemplo también utiliza la palabra clave $SUPPORT para recuperar la columna de tabla anidada directamente.

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

Los resultados contienen las tres primeras predicciones ordenadas por el valor de compatibilidad. Puede reemplazar $SUPPORT con $PROBABILITY o $ADJUSTED_PROBABILITY para devolver predicciones clasificadas por probabilidad o ajustar la probabilidad. Para obtener más información, vea Predict (DMX).