Поделиться через


TopSum (расширения интеллектуального анализа данных)

Возвращает, в порядке уменьшения ранга, верхние строки таблицы, сумма которых, как минимум, равна указанному значению.

Синтаксис

TopSum(<table expression>, <rank expression>, <sum>)

Область применения

Выражение, возвращающее таблицу, например <table column reference>, или функция, возвращающая таблицу.

Тип возвращаемых данных

<table expression>

Замечания

Функция TopSum возвращает верхние строки таблицы в порядке уменьшения ранга, основанного на вычисленном значении аргумента <rank expression> для каждой строки. Строки возвращаются таким образом, чтобы сумма значений <rank expression> была больше или равна сумме, заданной аргументом <sum>. Функция TopSum возвращает наименьшее возможное количество элементов, удовлетворяющих условию при данном значении аргумента sum.

Примеры

В следующем примере создается прогнозирующий запрос к модели взаимосвязей, построенной с помощью учебника Учебник по основам интеллектуального анализа данных.

Чтобы понять, как работает функция TopPercent, возможно, будет полезно сначала выполнить прогнозирующий запрос, который возвращает только вложенную таблицу.

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

Функция TopSum принимает результаты этого запроса и возвращает строки с наибольшими значениями, сумма которых составляет заданное число.

SELECT 
TopSum
    (
    Predict([Association].[v Assoc Seq Line Items],INCLUDE_STATISTICS,10),
    $PROBABILITY,
    .5)
FROM 
     [Association]
NATURAL PREDICTION JOIN
(SELECT (SELECT 'Women''s Mountain Shorts' as [Model]) AS [v Assoc Seq Line Items]) AS t

Первый аргумент функции TopSum — это имя столбца таблицы. В этом примере для возврата вложенной таблицы нужно вызвать функцию Predict и использовать аргумент INCLUDE_STATISTICS.

Второй аргумент функции TopSum — это столбец вложенной таблицы, используемый для упорядочения результатов. В этом примере параметр INCLUDE_STATISTICS возвращает столбцы $SUPPORT, $PROBABILTY и $ADJUSTED PROBABILITY. Данный пример использует $PROBABILITY для возврата строк, сумма которых составляет 50% вероятности.

Третий аргумент функции TopSum указывает целевую сумму и имеет тип double. Чтобы получить строки для наибольшего произведения, представляющего 50 процентов вероятности, необходимо ввести число 0,5.

Результаты примера:

Модель

$SUPPORT

$PROBABILITY

$ADJUSTEDPROBABILITY

Sport-100

4334

0.29…

0.25…

Water Bottle

2866

0.19…

0.17…

Patch kit

2113

0.14…

0.13…

Примечание.   Этот пример призван только продемонстрировать использование [TopSum]. В зависимости от размера набора данных выполнение данного запроса может занять значительное время.