SELECT FROM <modelo> PREDICTION JOIN (DMX)

Usa um modelo de mineração para predizer os estados de colunas em uma fonte de dados externa. A instrução PREDICTION JOIN cria correspondência entre cada caixa da consulta de fonte e o 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.

  • select expression list
    Lista separada por vírgula de identificadores e expressões que são derivados de um modelo de mineração.

  • model
    Um identificador de modelo.

  • sub select
    Instrução Select embutida.

  • source data query
    Consulta de fonte.

  • join mapping list
    Opcional. Expressão lógica que compara colunas do modelo com colunas da consulta de fonte.

  • condition expression
    Opcional. Condição para restringir os valores retornados da lista de colunas.

  • expression
    Opcional. 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 no <join mapping list> são relacionadas pelo uso de 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 não 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.

Especifique funções de previsão que não retornem uma expressão de tabela na <select expression list> nem a <condition expression>.

NATURAL PREDICTION JOIN mapeia automaticamente, em conjunto, nomes de coluna da consulta de fonte que faz a correspondência dos nomes de coluna no modelo. Quando se usa NATURAL PREDICTION, é possível 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 duas crianças em casa

Usando o modelo de mineração da Árvore de Decisão TM e as características conhecidas do assunto, a consulta retorna um valor booliano que descreve se a pessoa comprou a bicicleta e o conjunto de valores de tabela 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 lotes usando uma lista de clientes potenciais armazenada em um conjunto de dados externo. Como a tabela faz parte de uma exibição de fonte de dados 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 booleana 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 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]

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 que é criado no 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 é 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 após 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, use a palavra-chave FLATTENED conforme mostrado neste exemplo para facilitar a exibição dos resultados.