Condividi tramite


SELECT FROM <model> PREDICTION JOIN (DMX)

Utilizza un modello di data mining per stimare gli stati delle colonne in un'origine dei dati esterna. L'istruzione PREDICTION JOIN stabilisce una corrispondenza tra ogni case della query di origine e il modello.

Sintassi

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

Argomenti

  • n
    Facoltativo. Valore integer che specifica il numero di righe da restituire.

  • select expression list
    Elenco delimitato da virgole contenente espressioni e identificatori di colonna derivati dal modello di data mining.

  • model
    Identificatore del modello.

  • sub select
    Istruzione SELECT incorporata.

  • source data query
    Query di origine.

  • join mapping list
    Facoltativo. Espressione logica che confronta le colonne del modello con quelle della query di origine.

  • condition expression
    Facoltativo. Condizione per limitare i valori restituiti dall'elenco di colonne.

  • expression
    Facoltativo. Espressione che restituisce un valore scalare.

Osservazioni

La clausola ON definisce il mapping tra le colonne della query di origine e quelle del modello di data mining. Tale mapping viene utilizzato per dirigere le colonne dalla query di origine alle colonne nel modello di data mining, di modo che possano essere utilizzate come input durante la creazione delle stime. Le colonne elencate nell'argomento <join mapping list> vengono correlate tramite un segno di uguale (=) come mostrato nell'esempio seguente:

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

Quando si associa una tabella nidificata nella clausola ON, è necessario associare la colonna chiave a una colonna non chiave qualsiasi, di modo che l'algoritmo possa identificare correttamente a quale case appartiene il record della colonna nidificata.

La query di origine del PREDICTION JOIN può essere una query singleton o di tabella.

È possibile specificare funzioni di stima che non restituiscono un'espressione di tabella in <select expression list> e <condition expression>.

NATURAL PREDICTION JOIN stabilisce automaticamente il mapping tra i nomi delle colonne della query di origine e nomi delle colonne corrispondenti nel modello. Se si utilizza NATURAL PREDICTION, sarà possibile omettere la clausola ON.

La condizione WHERE può essere applicata solo a colonne stimabili o colonne correlate.

La clausola ORDER BY può accettare solo una singola colonna come argomento; ovvero, non è possibile eseguire l'ordinamento in base a più colonne.

Esempio 1: Query singleton

Nell'esempio seguente viene illustrato come creare una query per stimare in tempo reale la probabilità che una persona specifica acquisti una bicicletta. In questa query i dati non vengono archiviati in una tabella o in un'altra origine dati, ma vengono immessi direttamente nella query. La query si riferisce a una persona con il profilo seguente:

  • 35 anni

  • Possiede una casa

  • Possiede due automobili

  • Ha due figli

Se si utilizza il modello di data mining TM Decision Tree e le caratteristiche note del soggetto, la query restituisce un valore booleano che indica se la persona ha acquistato la bicicletta e un set di valori tabulari, restituiti dalla funzione PredictHistogram (DMX), che descrivono il modo in cui è stata eseguita la stima.

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

Esempio 2: Utilizzo di OPENQUERY

Nell'esempio seguente viene illustrato come creare una query di stima batch utilizzando un elenco di clienti potenziali archiviato in un set di dati esterno. Poiché la tabella fa parte di una vista origine dati definita in un'istanza di Analysis Services, la query può utilizzare OPENQUERY per recuperare i dati. Poiché i nomi delle colonne presenti nella tabella sono diversi da quelli presenti nel modello di data mining, è necessario utilizzare la clausola ON per eseguire il mapping delle colonne della tabella alle colonne del modello.

La query restituisce il nome e il cognome di ogni persona presente nella tabella, oltre a una colonna booleana che indica la probabilità che la persona acquisti una bicicletta, dove 0 indica "è improbabile che acquisti una bicicletta" e 1 indica "è probabile che acquisti una bicicletta". L'ultima colonna contiene la probabilità per il risultato stimato.

SELECT
  t.[LastName],
  t.[FirstName],
  [TM Decision Tree].[Bike Buyer],
  PredictProbability([Bike Buyer])
From
  [TM Decision Tree]
PREDICTION JOIN
  OPENQUERY([Adventure Works DW],
    '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]

Per limitare il set di dati solo ai clienti stimati come acquirenti di una bicicletta e quindi ordinare l'elenco in base al nome del cliente, è possibile aggiungere una clausola WHERE e una clausola ORDER BY all'esempio precedente:

WHERE [BIKE Buyer]
ORDER BY [LastName] ASC

Esempio 3: Stima delle associazioni

Nell'esempio seguente viene illustrato come creare una stima utilizzando un modello basato sull'algoritmo Microsoft Association Rules. Le stime su un modello di associazione possono essere utilizzate per consigliare prodotti correlati. La query seguente restituisce ad esempio i tre prodotti che hanno la maggiore probabilità di essere acquistati insieme ai tre prodotti seguenti:

  • Mountain Bottle Cage

  • Mountain Tire Tube

  • Mountain-200

La funzione Predict (DMX) è polimorfica e può essere utilizzata con tutti i tipi di modelli. Viene utilizzato value3 come argomento della funzione per limitare il numero di articoli restituiti dalla query. L'elenco SELECT che segue la clausola NATURAL PREDICTION JOIN fornisce i valori da utilizzare come input per la stima.

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

Risultati dell'esempio:

Expression.Model

HL Mountain Tire

Water Bottle

Fender Set - Mountain

Poiché la colonna che contiene l'attributo stimabile, [v Assoc Seq Line Items], è una colonna della tabella, la query restituisce una singola colonna contenente una tabella nidificata. Per impostazione predefinita, la colonna della tabella nidificata viene denominata Expression. Se il provider non supporta i set di righe gerarchici, è possibile utilizzare la parola chiave FLATTENED come illustrato in questo esempio per rendere più semplice la visualizzazione dei risultati.