SELECIONAR A PARTIR DO <MODELO> PREDICTION JOIN (DMX)

Aplica-se a: SQL Server Analysis Services

Utiliza um modelo de mineração para prever os estados das colunas numa fonte de dados externa. A instrução PREDICTION JOIN corresponde a cada caso desde a consulta de origem até ao modelo.

Syntax

  
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]]  

Arguments

n
Optional. Um inteiro que especifica quantas linhas devolver.

Lista de expressões selecionadas
Uma lista separada por vírgulas de identificadores de colunas e expressões derivadas do modelo de mineração.

Modelo
Um identificador de modelo.

Sub Select
Uma instrução select incorporada.

Consulta de dados de origem
A consulta de origem.

Lista de mapeamento de entrada
Optional. Uma expressão lógica que compara colunas do modelo com colunas da consulta de origem.

Expressão da condição
Optional. Uma condição para restringir os valores que são devolvidos da lista de colunas.

expression
Optional. Uma expressão que retorna um valor escalar.

Observações

A cláusula ON define o mapeamento entre as colunas da consulta de origem e as colunas do modelo de mineração. Este mapeamento é usado para direcionar colunas da consulta de origem para colunas no modelo de mineração, de modo a que as colunas possam ser usadas como entradas para criar as previsões. As colunas na < lista >de mapeamento de junção estão relacionadas usando um sinal igual (=), como mostrado no exemplo seguinte:

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

Se estiver a ligar uma tabela aninhada na cláusula ON, certifique-se de que associa a coluna chave com quaisquer colunas não-chave para que o algoritmo possa identificar corretamente a que caso pertence o registo da coluna aninhada.

A consulta de origem para a junção de previsão pode ser uma tabela ou uma consulta singleton.

Pode especificar funções de predição que não retornam uma expressão de tabela na < lista >de expressões select e na < expressão >de condição.

NATURAL PREDICTION JOIN mapeia automaticamente os nomes das colunas da consulta de origem que correspondem aos nomes das colunas no modelo. Se usares PREVISÃO NATURAL, podes omitir a cláusula ON.

A condição ONDE só pode ser aplicada a colunas previsíveis ou colunas relacionadas.

A cláusula ORDER by pode aceitar apenas uma única coluna como argumento; ou seja, não pode ordenar em mais do que uma coluna.

Exemplo 1: Consulta Singleton

O exemplo seguinte mostra como criar uma consulta para prever se uma pessoa específica irá comprar uma bicicleta em tempo real. Nesta consulta, os dados não são armazenados numa tabela ou noutra fonte de dados, mas sim inseridos diretamente na consulta. A pessoa na consulta tem as seguintes características:

  • 35 anos

  • Possui uma casa

  • Possui dois carros

  • Tem dois filhos a viver em casa

Usando o modelo de mineração TM Decision Tree e as características conhecidas sobre o sujeito, a consulta devolve um valor booleano que descreve se a pessoa comprou a bicicleta e um conjunto de valores tabulares, devolvidos pela função PredictHistogram (DMX ), que descrevem como a previsão foi feita.

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  

Exemplo 2: Utilização do OPENQUERY

O exemplo seguinte mostra como criar uma consulta de previsão por lote utilizando uma lista de potenciais clientes armazenada num conjunto de dados externo. Como a tabela faz parte de uma vista de fonte de dados definida numa instância de Analysis Services, a consulta pode usar o OPENQUERY para recuperar os dados. Como os nomes das colunas na tabela são diferentes dos do modelo de mineração, a cláusula ON deve ser usada para mapear as colunas da tabela para as colunas do modelo.

A consulta devolve o nome e apelido de cada pessoa na tabela, juntamente com uma coluna booleana que indica se cada pessoa é provável que vá comprar uma bicicleta, onde 0 significa "provavelmente não vai comprar uma bicicleta" e 1 significa "provavelmente vai comprar uma bicicleta". A última coluna contém a probabilidade para o resultado previsto.

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]  

Para restringir o conjunto de dados apenas aos clientes que se prevê que vão comprar uma bicicleta, e depois ordenar a lista pelo nome do cliente, pode adicionar uma cláusula WHERE e uma cláusula ORDER BY ao exemplo anterior:

WHERE [BIKE Buyer]  
ORDER BY [LastName] ASC  

Exemplo 3: Previsão de Associações

O exemplo seguinte mostra como criar uma previsão usando um modelo construído a partir do algoritmo da Microsoft Association. As previsões num modelo de associação podem ser usadas para recomendar produtos relacionados. Por exemplo, a consulta seguinte devolve os três produtos que têm maior probabilidade de serem adquiridos em conjunto:

  • Gaiola de Garrafas da Montanha

  • Câmara de pneu de montanha

  • Mountain-200

A função Predict (DMX) é polimórfica e pode ser usada com todos os tipos de modelos. Usas o value3 como argumento para a função para limitar o número de itens que são devolvidos pela consulta. A lista SELECT que segue a cláusula NATURAL PREDICTION JOIN fornece os valores a usar como entrada para a previsão.

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  

Exemplos de resultados:

Expression.Model
Pneumático de Montanha HL
Garrafa de Água
Fender Set - Montanha

Como a coluna que contém o atributo previsível, [v Assoc Seq Line Items], é uma coluna de tabela, a consulta devolve uma única coluna que contém uma tabela aninhada. Por defeito, a coluna da tabela aninhada chama-se Expression. Se o seu fornecedor não suportar conjuntos de linhas hierárquicos, pode usar a palavra-chave FLATTENED , como mostrado neste exemplo, para facilitar a visualização dos resultados.