SÉLECTIONNER À PARTIR DE <LA JOINTURE DE PRÉDICTION DE MODÈLE> (DMX)

S’applique à :SQL Server Analysis Services

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 correspond à chaque cas de la requête source au 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
Optionnel. Entier qui spécifie le nombre de lignes à retourner.

sélectionner une liste d’expressions
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

sous-sélectionner
Instruction Select incorporée

requête de données source
Requête source

liste de mappage de jointure
Optionnel. Expression logique qui compare les colonnes du modèle aux colonnes de la requête source.

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

expression
Optionnel. Expression retournant 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 la < liste >de mappage des jointures sont liées à l’aide d’un signe égal (=), comme illustré 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édiction qui ne retournent pas d’expression de table dans la < liste >des expressions de sélection et l’expression> de condition<.

NATURAL PREDICTION JOIN mappe automatiquement les noms de colonnes de la requête source qui correspondent aux noms de colonnes dans le 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 TM Decision Tree et des caractéristiques connues du sujet, la requête retourne une valeur booléenne qui indique si la personne a acheté le vélo et un ensemble de valeurs tabulaires, retournées par la fonction PredictHistogram (DMX), qui décrivent comment la prédiction a été effectué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. Étant donné que la table fait partie d’une vue de source de données qui a été définie sur un instance d’Analysis Services, la requête peut utiliser OPENQUERY pour récupérer les données. Étant donné que les noms des colonnes de la table sont différents de ceux du 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 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]  

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édiction à l’aide d’un modèle créé à 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 qui suit 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 comme indiqué dans cet exemple pour faciliter l’affichage des résultats.

Voir aussi

SELECT (DMX)
Instructions de définition de données DMX (Data Mining Extensions)
Instructions de manipulations de données DMX (Data Mining Extensions)
Guide de référence des instructions DMX (Data Mining Extensions)