Compartilhar via


TopCount (DMX)

Retorna o número especificado de linhas superiores em ordem decrescente de classificação, conforme especificado por uma expressão.

Sintaxe

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

Aplica-se a

Expressão que retorna uma tabela, como uma <referência de coluna de tabela>, ou uma função que retorna uma tabela.

Tipo de retorno

<expressão de tabela>

Comentários

O valor que é fornecido pelo argumento da <expressão de classificação> determina a ordem de classificação decrescente das linhas fornecidas pelo argumento <expressão de tabela>, e o número de linhas superiores especificado no argumento <contagem> é retornado.

A função TopCount foi introduzida originalmente no SQL Server 2000 para permitir previsões associativas e, em geral, produz os mesmos resultados que uma instrução que inclui as cláusulas SELECT TOP e ORDER BY. No SQL Server 2005 e no SQL Server 2008, você obterá melhor desempenho para previsões associativas, se usar a função Predict (DMX) que suporta a especificação de um número de previsões a serem retornadas. 

No entanto, há situações em que você pode ainda precisar usar TopCount. Por exemplo, DMX não oferece suporte ao qualificador TOP em uma instrução de subseleção. A função PredictHistogram (DMX) também não oferece suporte à adição de TOP.

Exemplos

Os exemplos a seguir são consultas de previsão no modelo de Associação que você compila usando o Tutorial de mineração de dados básico. As consultas retornam os mesmos resultados, mas o primeiro exemplo usa a função TopCount e o segundo usa a função Predict.

Para compreender como TopCount funciona, talvez seja útil primeiro executar uma consulta de previsão que retorne apenas a tabela aninhada.

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
ObservaçãoObservação

Neste exemplo, o valor fornecido como entrada contém uma única aspa e, portanto, deve ser precedido por outra aspa. Se você não tiver certeza da sintaxe para inserção de um caractere de escape, use o Construtor de Consultas de Previsão para criar a consulta. Quando você seleciona o valor da lista suspensa, o caractere de escape exigido é inserido. Para obter mais informações, consulte Como criar uma consulta Singleton no Designer de Mineração de Dados.

Resultados do exemplo:

Modelo

$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

Tubo de pneu de estrada

1588

0.106727603

0.101229538

Capacete para Ciclismo

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

A função TopCount utiliza os resultados desta consulta e retorna o número especificado das linhas de menor valor.

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

O primeiro argumento para a função TopCount é o nome de uma coluna de tabela. Neste exemplo, a tabela aninhada é retornada chamando-se a função Predict e usando-se o argumento INCLUDE_STATISTICS.

O segundo argumento para a função TopCount é a coluna na tabela aninhada que você pode usar para ordenar os resultados. Neste exemplo, a opção INCLUDE_STATISTICS retorna as colunas $SUPPORT, $PROBABILTY e $ADJUSTED PROBABILITY. Este exemplo usa $SUPPORT para classificar os resultados.

O terceiro argumento para a função TopCount especifica o número de linhas a serem retornadas como um inteiro. Para obter os três principais produtos, ordenados por $SUPPORT, digite 3.

Resultados do exemplo:

Modelo

$SUPPORT

$PROBABILITY

$ADJUSTEDPROBABILITY

Sport-100

4334

0.29…

0.25…

Water Bottle

2866

0.19…

0.17…

Patch kit

2113

0.14…

0.13…

No entanto, esse tipo de consulta pode afetar o desempenho em uma configuração de produção. Isso é porque a consulta retorna um conjunto de todas as previsões do algoritmo, classifica essas previsões e retorna as três principais.

O exemplo a seguir fornece uma instrução alternativa que retorna os mesmos resultados, mas é executada de maneira significativamente mais rápida. Este exemplo substitui a função TopCount pela função Predict que aceita um número de previsões como um argumento. Este exemplo também usa a palavra-chave $SUPPORT para recuperar diretamente a coluna da tabela aninhada.

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

Os resultados contêm as três principais previsões classificadas pelo valor de suporte. Você pode substituir $SUPPORT por $PROBABILITY ou $ADJUSTED_PROBABILITY para retornar previsões classificadas por probabilidade ou probabilidade ajustada. Para obter mais informações, consulte Predict (DMX).