SELECT FROM <MODEL> PREDICTION JOIN (DMX)

Область применения: SQL Server Analysis Services

Использует модель интеллектуального анализа данных для прогнозирования состояний столбцов внешнего источника данных. Инструкция 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
Разделенный запятыми список идентификаторов столбцов и выражений, производных от модели интеллектуального анализа данных.

model
Идентификатор модели.

Вложенный выбор
Внедренная инструкция SELECT.

запрос исходных данных
Исходный запрос.

Список сопоставления соединений
Необязательно. Логическое выражение сравнения столбцов модели со столбцами исходного запроса.

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

выражение
Необязательно. Выражение, возвращающее скалярное значение.

Замечания

Предложение ON определяет сопоставление столбцов исходного запроса со столбцами модели интеллектуального анализа данных. Такое сопоставление используется для того, чтобы направить столбцы из исходного запроса в столбцы модели интеллектуального анализа данных и чтобы при создании прогнозов можно было использовать эти столбцы в качестве входных. Столбцы в списке <> сопоставления соединения связаны с помощью знака равенства (=), как показано в следующем примере:

[MiningModel].ColumnA = [source data query].Column1 AND   
[MiningModel].ColumnB = [source data query].Column2 AND  
...  

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

Исходный запрос для прогнозируемого соединения может представлять собой таблицу или одноэлементный запрос.

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

NATURAL PREDICTION JOIN автоматически сопоставляет имена столбцов из исходного запроса, соответствующего именам столбцов в модели. Если вы используете NATURAL PREDICTION, можно опустить предложение ON.

Условие WHERE можно применять только к прогнозируемым столбцам или к связанным столбцам.

Предложение ORDER BY может принять в качестве аргумента только один столбец, т. е. нельзя сортировать по нескольким столбцам.

Пример 1. Одноэлементный запрос

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

  • Возраст 35 лет

  • Владеет домом

  • Владеет двумя автомобилями

  • У него дома живут двое детей

Используя модель интеллектуального анализа дерева принятия решений TM и известные характеристики субъекта, запрос возвращает логическое значение, описывающее, купил ли пользователь велосипед и набор табличных значений, возвращаемых функцией PredictHistogram (DMX), которая описывает, как было сделано прогнозирование.

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 Multidimensional 2012],  
    '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 Bottle Cage

  • Камера для горного велосипеда

  • Mountain-200

Функция Predict (DMX) является полиморфной и может использоваться со всеми типами моделей. Значение 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
Фляга для воды
Набор крыльев для велосипеда Mountain

Поскольку столбец, содержащий прогнозируемый атрибут [v Assoc Seq Line Items], представляет собой столбец таблицы, запрос возвращает один столбец, который содержит вложенную таблицу. По умолчанию этот столбец с вложенной таблицей имеет имя Expression. Если поставщик не поддерживает иерархические наборы строк, можно использовать ключевое слово FLATTENED , как показано в этом примере, чтобы упростить просмотр результатов.

См. также

SELECT (DMX)
Инструкции определения данных расширений интеллектуального анализа данных (DMX)
Инструкции по обработке данных расширения интеллектуального анализа данных (DMX)
Справочник по расширениям интеллектуального анализа данных (DMX)