TopCount (расширения интеллектуального анализа данных)
Возвращает заданное в инструкции количество верхних строк в порядке убывания их ранга как указано в выражении.
Синтаксис
TopCount(<table expression>, <rank expression>, <count>)
Область применения
Выражение, возвращающее таблицу (например, <table column reference>), или функция, возвращающая таблицу.
Тип возвращаемых данных
<table expression>
Замечания
Значение, задаваемое аргументом <ранжирующего выражения>, определяет порядок убывания ранга строк, содержащихся в аргументе <табличного выражения>. При этом возвращается количество верхних строк, заданных аргументом <счета>.
Функция TopCount впервые появилась в SQL Server 2000 и была предназначена для выполнения ассоциативных прогнозов. Как правило, она имела тот же результат, что и инструкция с предложениями SELECT TOP и ORDER BY. В SQL Server 2005 и SQL Server 2008 производительность ассоциативных прогнозов повышена за счет использования функции Predict (DMX), которая поддерживает указание количества возвращаемых прогнозов.
Однако при этом может возникнуть необходимость использования TopCount. Например, расширения интеллектуального анализа данных не поддерживают квалификатор TOP в инструкции вложенного запроса. Функция PredictHistogram также не поддерживает добавление квалификатора TOP.
Примеры
Следующие примеры являются прогнозирующими запросами к модели взаимосвязей, построенной с помощью учебника Учебник по основам интеллектуального анализа данных. Запросы возвращают одинаковые результаты, но в первом примере используется TopCount, а во втором – функция Predict.
Чтобы понять, как работает функция TopCount, лучше будет сначала выполнить прогнозирующий запрос, который возвращает только вложенную таблицу.
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
Примечание |
---|
В этом примере значение, заданное в качестве входных данных, содержит знак одинарной кавычки, а значит, его нужно экранировать и добавить перед ним еще один знак кавычки. При отсутствии уверенности в синтаксических конструкциях, используемых для вставки экранирующего символа, запросы можно создавать с помощью построителя прогнозирующих запросов. При выборе значения из раскрывающегося списка необходимый экранирующий символ вставляется автоматически. Дополнительные сведения см. в разделе Как создать одноэлементный запрос в конструкторе интеллектуального анализа данных. |
Результаты примера:
Модель |
$SUPPORT |
$PROBABILITY |
$ADJUSTEDPROBABILITY |
---|---|---|---|
Sport-100 |
4334 |
0.291283016 |
0.252695851 |
Фляга для воды |
2866 |
0.192620472 |
0.175205052 |
Ремонтный комплект |
2113 |
0.142012232 |
0.132389356 |
Камера шины для велосипеда Mountain |
1992 |
0.133879965 |
0.125304948 |
Mountain-200 |
1755 |
0.117951475 |
0.111260823 |
Камера шины для шоссейного велосипеда |
1588 |
0.106727603 |
0.101229538 |
Велосипедная шапочка |
1473 |
0.098998589 |
0.094256014 |
Набор крыльев для велосипедов Mountain |
1415 |
0.095100477 |
0.090718432 |
Держатель фляги для велосипеда Mountain |
1367 |
0.091874454 |
0.087780332 |
Держатель фляги для шоссейного велосипеда |
1195 |
0.080314537 |
0.077173962 |
Функция TopCount принимает результаты этого запроса и возвращает указанное количество строк с наименьшими значениями.
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
Первый аргумент функции TopCount — это имя столбца таблицы. В этом примере для возврата вложенной таблицы нужно вызвать функцию Predict и использовать аргумент INCLUDE_STATISTICS.
Второй аргумент функции TopCount — это столбец вложенной таблицы, используемый для упорядочения результатов. В этом примере параметр INCLUDE_STATISTICS возвращает столбцы $SUPPORT, $PROBABILTY и $ADJUSTED PROBABILITY. В данном примере используется столбец $SUPPORT для ранжирования результатов.
Третий аргумент функции TopCount – это целочисленное значение, указывающее количество возвращаемых строк. Чтобы получить три верхних продукта, упорядоченных по столбцу $SUPPORT, введите 3.
Результаты примера:
Модель |
$SUPPORT |
$PROBABILITY |
$ADJUSTEDPROBABILITY |
---|---|---|---|
Sport-100 |
4334 |
0.29… |
0.25… |
Фляга для воды |
2866 |
0.19… |
0.17… |
Ремонтный комплект |
2113 |
0.14… |
0.13… |
Однако данный тип запроса может повлиять на производительность в производственных условиях. Причина этого заключается в том, что запрос получает из алгоритма полный набор прогнозов, сортирует их и возвращает первые 3.
Следующий пример демонстрирует альтернативную инструкцию, которая возвращает тот же результат, но выполняется значительно быстрее. В данном примере TopCount заменен функцией Predict, которая принимает количество прогнозов в качестве аргумента. В этом примере также используется ключевое слово $SUPPORT для получения непосредственно столбца вложенной таблицы.
SELECT Predict ([Association].[v Assoc Seq Line Items], INCLUDE_STATISTICS, 3, $SUPPORT)
Результаты содержат первые 3 прогноза, отсортированные по значению поддержки. Можно заменить $SUPPORT на $PROBABILITY или $ADJUSTED_PROBABILITY, чтобы получить прогнозы, ранжированные по вероятности или скорректированной вероятности. Дополнительные сведения см. в разделе Predict (DMX).