SELECT FROM <модель> PREDICTION JOIN (расширения интеллектуального анализа данных)
Использует модель интеллектуального анализа данных для прогнозирования состояний столбцов внешнего источника данных. Инструкция PREDICTION JOIN производит согласование каждого варианта исходного запроса с моделью.
Синтаксис
SELECT [FLATTENED] [TOP <n>] <select expression list>
FROM <model> | <sub select> [NATURAL] PREDICTION JOIN
<source data query> [ON <join mapping list>]
[WHERE <condition expression>]
[ORDER BY <expression> [DESC|ASC]]
Аргументы
n
(необязательный аргумент) Целое число, указывающее количество возвращаемых строк.select expression list
Разделенный запятыми список идентификаторов столбцов и выражений, производных от модели интеллектуального анализа данных.model
Идентификатор модели.sub select
Внедренная инструкция SELECT.source data query
Исходный запрос.join mapping list
(необязательный аргумент) Логическое выражение сравнения столбцов модели со столбцами исходного запроса.condition expression
(необязательный аргумент) Условие ограничения значений, возвращаемых из списка столбцов.expression
(необязательный аргумент) Выражение, возвращающее скалярное значение.
Замечания
Предложение ON определяет сопоставление столбцов исходного запроса со столбцами модели интеллектуального анализа данных. Такое сопоставление используется для направления столбцов исходного запроса к столбцам модели интеллектуального анализа данных, чтобы эти столбцы можно было использовать в качестве входных при создании прогнозов. Столбцы в списке <join mapping list> соотносятся с помощью знака равенства (=), как показано в следующем примере:
[MiningModel].ColumnA = [source data query].Column1 AND
[MiningModel].ColumnB = [source data query].Column2 AND
...
При связывании вложенной таблицы предложением ON удостоверьтесь, что ключевой столбец связывается с какими-либо неключевыми столбцами, чтобы алгоритм мог корректно идентифицировать вариант, которому принадлежит запись вложенного столбца.
Исходный запрос для прогнозируемого соединения может представлять собой таблицу или одноэлементный запрос.
В списке <select expression list> и выражении <condition expression> можно указывать прогнозирующие функции, не возвращающие табличного выражения.
Инструкция NATURAL PREDICTION JOIN автоматически сопоставляет имена столбцов исходного запроса, совпадающих с именами столбцов модели. В случае использования инструкции NATURAL PREDICTION предложение ON можно пропустить.
Условие WHERE можно применять только к прогнозируемым столбцам или к связанным столбцам.
Предложение ORDER BY может принимать в качестве аргумента только один столбец; иначе говоря, нельзя осуществлять сортировку по более чем одному столбцу.
Пример 1. Одноэлементный запрос
В следующем примере показывается, как создать запрос, прогнозирующий вероятность приобретения указанным лицом велосипеда в реальном времени. В этом запросе данные не хранятся в таблице или в другом источнике данных; они вводятся непосредственно в запрос. Человек в запросе обладает следующими характеристиками:
Возраст 35 лет
Владеет домом
Владеет двумя автомобилями
Двое детей дома
Используя модель интеллектуального анализа данных TM-дерева принятия решений и известные характеристики субъекта, запрос возвращает логическое значение, описывающее факт покупки велосипеда человеком, и набор табличных значений, возвращенных функцией PredictHistogram, описывающих, как был сделан прогноз.
SELECT
[TM Decision Tree].[Bike Buyer],
PredictHistogram([Bike Buyer])
FROM
[TM Decision Tree]
NATURAL PREDICTION JOIN
(SELECT 35 AS [Age],
'5-10 Miles' AS [Commute Distance],
'1' AS [House Owner Flag],
2 AS [Number Cars Owned],
2 AS [Total Children]) AS t
Пример 2. Использование функции OPENQUERY
В следующем примере показано, как создать пакетный прогнозирующий запрос с использованием списка потенциальных клиентов, хранимого во внешнем наборе данных. Поскольку таблица является частью представления источника данных, который был определен для экземпляра служб Analysis Services, для получения данных в запросе можно использовать функцию OPENQUERY. Имена столбцов таблицы отличаются от имен столбцов, содержащихся в модели интеллектуального анализа данных, поэтому для сопоставления столбцов таблицы и столбцов модели нужно использовать предложение ON.
Запрос возвращает список имен и фамилий каждого человека в таблице наряду с логическим столбцом, указывающим на вероятность покупки им велосипеда, где 0 означает «вероятно, не будет покупать велосипед», а 1 означает «вероятно, купит велосипед». Последний столбец содержит значение вероятности прогнозируемого результата.
SELECT
t.[LastName],
t.[FirstName],
[TM Decision Tree].[Bike Buyer],
PredictProbability([Bike Buyer])
From
[TM Decision Tree]
PREDICTION JOIN
OPENQUERY([Adventure Works DW],
'SELECT
[LastName],
[FirstName],
[MaritalStatus],
[Gender],
[YearlyIncome],
[TotalChildren],
[NumberChildrenAtHome],
[Education],
[Occupation],
[HouseOwnerFlag],
[NumberCarsOwned]
FROM
[dbo].[ProspectiveBuyer]
') AS t
ON
[TM Decision Tree].[Marital Status] = t.[MaritalStatus] AND
[TM Decision Tree].[Gender] = t.[Gender] AND
[TM Decision Tree].[Yearly Income] = t.[YearlyIncome] AND
[TM Decision Tree].[Total Children] = t.[TotalChildren] AND
[TM Decision Tree].[Number Children At Home] = t.[NumberChildrenAtHome] AND
[TM Decision Tree].[Education] = t.[Education] AND
[TM Decision Tree].[Occupation] = t.[Occupation] AND
[TM Decision Tree].[House Owner Flag] = t.[HouseOwnerFlag] AND
[TM Decision Tree].[Number Cars Owned] = t.[NumberCarsOwned]
Чтобы ограничить набор данных только теми клиентами, которые по прогнозу приобретут велосипед, а затем отсортировать список по имени клиентов, можно к предыдущему примеру добавить предложения WHERE и ORDER BY.
WHERE [BIKE Buyer]
ORDER BY [LastName] ASC
Пример 3. Прогноз взаимосвязей
Следующий пример показывает способ создания прогноза с помощью модели, построенной алгоритмом взаимосвязей (Microsoft). Прогнозы на основе модели взаимосвязей можно использовать для рекомендации связанных продуктов. К примеру, следующий запрос возвращает три продукта, которые, скорее всего, будут приобретены вместе со следующими тремя продуктами:
Mountain Bottle Cage
Mountain Tire Tube
Mountain-200
Функция Predict (расширения интеллектуального анализа данных) является полиморфной и может использоваться со всеми типами моделей. Значение value3 используется в качестве аргумента функции, чтобы ограничить число элементов, возвращаемых запросом. Список инструкции SELECT, следующий за предложением NATURAL PREDICTION JOIN, содержит значения, используемые в качестве входных данных для прогноза.
SELECT FLATTENED
PREDICT([Association].[v Assoc Seq Line Items], 3)
FROM
[Association]
NATURAL PREDICTION JOIN
(SELECT (SELECT 'Mountain Bottle Cage' AS [Model]
UNION SELECT 'Mountain Tire Tube' AS [Model]
UNION SELECT 'Mountain-200' AS [Model]) AS [v Assoc Seq Line Items ]) AS t
Образец результатов:
Expression.Model |
---|
HL Mountain Tire |
Water Bottle |
Fender Set - Mountain |
Поскольку столбец, содержащий прогнозируемый атрибут [v Assoc Seq Line Items], представляет собой столбец таблицы, запрос возвращает один столбец, который содержит вложенную таблицу. По умолчанию этот столбец с вложенной таблицей имеет имя Expression. Если поставщик не поддерживает иерархические наборы строк, можно, как показано в этом примере, использовать ключевое слово FLATTENED; тогда результаты будет удобнее просматривать.