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 DW2008R2],
    '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. Прогноз взаимосвязей

Следующий пример показывает способ создания прогноза с помощью модели, построенной алгоритмом взаимосвязей (Майкрософт). Прогнозы на основе модели взаимосвязей можно использовать для рекомендации связанных продуктов. Например, следующий запрос возвращает три продукта, которые, скорее всего, будут приобретены вместе:

  • Держатель фляги для велосипеда Mountain

  • Камера шины для велосипеда Mountain

  • 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; тогда результаты будет удобнее просматривать.