Partilhar via


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

Aplica-se a: SQL Server Analysis Services

Usa um modelo de mineração para predizer os estados de colunas em uma fonte de dados externa. A instrução PREDICTION JOIN corresponde a cada caso da consulta de origem ao modelo.

Sintaxe

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

Argumentos

n
Opcional. Um inteiro que especifica quantas linhas serão retornadas.

selecionar lista de expressões
Lista separada por vírgula de identificadores e expressões que são derivados de um modelo de mineração.

Modelo
Identificador de modelo.

sub-seleção
Instrução Select inserida.

Consulta de dados de origem
Consulta de fonte.

Lista de mapeamento de junção
Opcional. Expressão lógica que compara colunas do modelo com colunas da consulta de fonte.

expressão de condição
Opcional. Uma condição para restringir os valores retornados da lista de colunas.

expressão
Opcional. Uma expressão que retorna um valor escalar.

Comentários

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

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

Se você estiver associando uma tabela aninhada à cláusula ON, é preciso verificar se a coluna de chave está associada a qualquer coluna que não seja uma coluna de chave, de modo que o algoritmo possa identificar corretamente a caixa à qual pertence o registro da coluna aninhada.

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

Você pode especificar funções de previsão que não retornam uma expressão de tabela na <lista> de expressões de seleção 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 você usar NATURAL PREDICTION, poderá omitir a cláusula ON.

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

A cláusula ORDER by só pode aceitar uma única coluna como um argumento; ou seja, não é possível classificar em mais de uma coluna.

Exemplo 1: Consulta singleton

O exemplo a seguir mostra como criar uma consulta para prever se uma determinada pessoa comprará uma bicicleta em tempo real. Nesta consulta, os dados não são armazenados em uma tabela ou outra fonte de dados, em vez disso, são inseridos diretamente na consulta. A pessoa na consulta tem as seguintes características:

  • 35 anos de idade

  • Possui uma casa

  • Possui dois carros

  • Tem dois filhos morando em casa

Usando o modelo de mineração TM Decision Tree e as características conhecidas sobre o assunto, a consulta retorna um valor booliano que descreve se a pessoa comprou a bicicleta e um conjunto de valores tabulares, retornados 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: Usando OPENQUERY

O exemplo a seguir mostra como criar uma consulta de previsão em lote usando uma lista de clientes potenciais armazenados em um conjunto de dados externo. Como a tabela faz parte de uma exibição da fonte de dados que foi definida em uma instância do Analysis Services, a consulta pode usar OPENQUERY para recuperar os dados. Como os nomes das colunas na tabela são diferentes daqueles no modelo de mineração, a cláusula ON deve ser usada para mapear as colunas na tabela para as colunas no modelo.

A consulta retorna o primeiro e o último nome de cada pessoa na tabela, junto com uma coluna booliana que indica se cada pessoa provavelmente comprará uma bicicleta, onde 0 significa "provavelmente não comprará uma bicicleta" e 1 significa "provavelmente comprará uma bicicleta". A última coluna contém a probabilidade do 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 provavelmente comprarão uma bicicleta e classificar a lista por nome de cliente, adicione uma cláusula WHERE e uma cláusula ORDER BY ao exemplo anterior:

WHERE [BIKE Buyer]  
ORDER BY [LastName] ASC  

Exemplo 3: Prevendo associações

O exemplo a seguir mostra como criar uma previsão usando um modelo criado a partir do algoritmo Microsoft Association. As previsões em um modelo de associação podem ser usadas para recomendar produtos relacionados. Por exemplo, a consulta a seguir retorna os três produtos com maior probabilidade de serem adquiridos juntos:

  • Mountain Bottle Cage

  • Mountain Tire Tube

  • Mountain-200

A função Predict (DMX) é polimórfica e pode ser usada com todos os tipos de modelo. Use value3 como um argumento para a função, para limitar o número de itens retornados pela consulta. A lista SELECT que segue a cláusula NATURAL PREDICTION JOIN fornece os valores a serem usados como entrada para 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  

Resultados do exemplo:

Expression.Model
HL Mountain Tire
Water Bottle
Fender Set - Mountain

Como a coluna que contém o atributo previsível [v Assoc Seq Line Items] é uma coluna de tabela, a consulta retorna uma única coluna que contém uma tabela aninhada. Por padrão a coluna de tabela aninhada é denominada Expression. Se o provedor não der suporte a conjuntos de linhas hierárquicos, você poderá usar a palavra-chave FLATTENED , conforme mostrado neste exemplo, para facilitar a exibição dos resultados.

Confira também

SELECIONAR (DMX)
Instruções de definição de dados DMX (Data Mining Extensions)
Instruções de manipulação de dados DMX (Data Mining Extensions)
Referência de instrução DMX (Data Mining Extensions)