SELECT FROM <modèle> PREDICTION JOIN (DMX)

Utilise un modèle d'exploration de données pour prévoir les états des colonnes dans une source de données externe. L'instruction PREDICTION JOIN fait correspondre chaque cas entre la requête source et le modèle.

Syntaxe

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
    Facultatif. Entier spécifiant le nombre de lignes à retourner.

  • select expression list
    Liste séparée par des virgules des identificateurs de colonnes et expressions dérivées du modèle d'exploration de données.

  • model
    Identificateur du modèle

  • sub select
    Instruction Select incorporée

  • source data query
    Requête source

  • join mapping list
    Facultatif. Expression logique qui compare les colonnes du modèle aux colonnes de la requête source.

  • condition expression
    Facultatif. Condition pour restreindre les valeurs retournées de la liste des colonnes.

  • expression
    Facultatif. Expression qui retourne une valeur scalaire.

Notes

La clause ON définit le mappage entre les colonnes de la requête source et les colonnes du modèle d'exploration de données. Ce mappage sert à diriger les colonnes depuis la requête source vers les colonnes du modèle d'exploration de données de sorte que les colonnes puissent être utilisées en valeurs d'entrée pour créer des prédictions. Les colonnes de l'argument <join mapping list> sont reliées à l'aide du signe égal (=), comme indiqué dans l'exemple suivant :

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

Si vous liez une table imbriquée dans la clause ON, veillez à lier la colonne clé avec des colonnes non clé de sorte que l'algorithme puisse identifier correctement à quel cas appartient l'enregistrement de la colonne imbriquée.

La requête source de la jointure de prévision peut être une table ou une requête singleton.

Vous pouvez spécifier des fonctions de prévision qui ne retournent pas d'expression de table dans les arguments <select expression list> et <condition expression>.

NATURAL PREDICTION JOIN mappe automatiquement ensemble les noms de colonnes de la requête source qui correspondent aux noms de colonnes du modèle. Si vous utilisez NATURAL PREDICTION, vous pouvez omettre la clause ON.

La condition WHERE ne peut être appliquée qu'aux colonnes prédictibles ou associées.

La clause ORDER BY ne peut accepter qu'une seule colonne comme argument ; autrement dit, vous ne pouvez pas effectuer de tri sur plusieurs colonnes.

Exemple 1 : requête singleton

L'exemple suivant montre comment créer une requête permettant de prédire si une personne spécifique achètera ou non une bicyclette en temps réel. Dans cette requête, les données ne sont pas stockées dans une table ou toute autre source de données, mais sont directement entrées dans la requête. La personne spécifiée dans la requête possède les caractéristiques suivantes :

  • 35 ans

  • Propriétaire d'une maison

  • Deux voitures

  • Deux enfants à charge

À l'aide du modèle d'exploration de données Arbre de décision TM et des caractéristiques connues sur le sujet, la requête retourne une valeur booléenne qui indique si la personne a acheté la bicyclette, ainsi qu'un ensemble de valeurs tabulaires, retournées par la fonction PredictHistogram (DMX), qui décrivent comment la prédiction a été réalisée.

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

Exemple 2 : utilisation de OPENQUERY

L'exemple suivant montre comment créer une requête de prédiction par lot à l'aide d'une liste de clients potentiels stockés dans un dataset externe. La table faisant partie d'une vue de source de données définie sur une instance Analysis Services, la requête peut utiliser OPENQUERY pour récupérer les données. Les noms des colonnes dans la table étant différents de ceux dans le modèle d'exploration de données, la clause ON doit être utilisée pour mapper les colonnes de la table aux colonnes du modèle.

La requête retourne le prénom et le nom de toutes les personnes de la table, ainsi qu'une colonne booléenne qui indique si chaque personne est susceptible d'acheter une bicyclette, où 0 signifie « n'achètera probablement pas de bicyclette » et 1 signifie « achètera probablement une bicyclette ». La dernière colonne contient la probabilité du résultat prédit.

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]

Pour restreindre le jeu de données uniquement aux clients prédits comme acheteurs de bicyclette, puis trier la liste par nom de client, vous pouvez ajouter une clause WHERE et une clause ORDER BY à l'exemple précédent :

WHERE [BIKE Buyer]
ORDER BY [LastName] ASC

Exemple 3 : prédiction des associations

L'exemple suivant montre comment créer une prévision en utilisant un modèle construit à partir de l'algorithme Microsoft Association. Les prédictions sur un modèle d'association permettent de recommander des produits associés. Par exemple, la requête suivante retourne les trois produits qui ont le plus de chances d'être achetés ensemble :

  • Mountain Bottle Cage

  • Mountain Tire Tube

  • Mountain-200

La fonction Predict (DMX) est polymorphe et peut être utilisée avec tous les types de modèles. Vous pouvez utiliser la valeur 3 comme argument pour la fonction afin de limiter le nombre d'articles retournés par la requête. La liste SELECT indiquée à la suite de la clause NATURAL PREDICTION JOIN fournit les valeurs à utiliser comme entrée pour la prédiction.

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

Résultats de l'exemple :

Expression.Model

HL Mountain Tire

Water Bottle

Fender Set - Mountain

La colonne contenant l'attribut prédictible [v Assoc Seq Line Items] étant une colonne de table, la requête retourne une colonne unique qui contient une table imbriquée. Par défaut, la colonne de table imbriquée est appelée Expression. Si votre fournisseur ne prend pas en charge les ensembles de lignes hiérarchiques, vous pouvez utiliser le mot clé FLATTENED tel qu'indiqué dans cet exemple pour simplifier la consultation des résultats.