SELECTEER UIT <MODEL> VOORSPELLING JOIN (DMX)

van toepassing op: SQL Server Analysis Services

Gebruikt een miningmodel om de toestanden van kolommen in een externe databron te voorspellen. De PREDICTION JOIN-instructie komt overeen met elk geval van de bronquery naar het model.

Syntax

  
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
Optional. Een geheel getal dat aangeeft hoeveel rijen moeten teruggeven.

Selecteer expressielijst
Een komma-gescheiden lijst van kolomidentificaties en expressies die zijn afgeleid van het mijnbouwmodel.

Model
Een modelidentificatie.

Subselectie
Een ingebedde select-instructie.

Brongegevensopvraging
De bronvraag.

Sluit aan kaartenlijst
Optional. Een logische expressie die kolommen uit het model vergelijkt met kolommen uit de bronquery.

Toestandsuitdrukking
Optional. Een voorwaarde om de waarden te beperken die uit de kolomlijst worden teruggegeven.

expression
Optional. Een expressie die een scalaire waarde retourneert.

Remarks

De ON-clausule definieert de mapping tussen de kolommen uit de bronquery en de kolommen uit het mijnbouwmodel. Deze mapping wordt gebruikt om kolommen van de bronquery naar kolommen in het mijnbouwmodel te sturen, zodat de kolommen als invoer kunnen worden gebruikt om de voorspellingen te maken. Kolommen in de <join-mappinglijst> zijn gerelateerd door een gelijkheidsteken (=), zoals getoond in het volgende voorbeeld:

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

Als je een geneste tabel bindt in de ON-clausule, zorg er dan voor dat je de sleutelkolom bindt met alle niet-sleutelkolommen zodat het algoritme correct kan identificeren tot welk geval het record van de geneste kolom behoort.

De bronquery voor de voorspellingsjoin kan een tabel- of een singleton-query zijn.

Je kunt voorspellingsfuncties specificeren die geen tabelexpressie teruggeven in de <select-expressielijst> en de <conditieexpressie>.

NATURAL PREDICTION JOIN koppelt automatisch kolomnamen uit de bronquery die overeenkomen met kolomnamen in het model. Als je NATURAL PREDICTION gebruikt, kun je de ON-clausule weglaten.

De WHERE-voorwaarde kan alleen worden toegepast op voorspelbare kolommen of gerelateerde kolommen.

De ORDER by-clausule kan slechts één kolom als argument accepteren; Dat wil zeggen, je kunt niet op meer dan één kolom sorteren.

Voorbeeld 1: Singleton-zoekopdracht

Het volgende voorbeeld laat zien hoe je een query kunt maken om te voorspellen of een specifiek persoon in realtime een fiets zal kopen. In deze query wordt de data niet opgeslagen in een tabel of andere databron, maar direct in de query ingevoerd. De persoon in de query heeft de volgende kenmerken:

  • 35 jaar oud

  • Bezit een huis

  • Bezit twee auto's

  • Heeft twee kinderen die thuis wonen

Met behulp van het TM Decision Tree miningmodel en de bekende kenmerken van het onderwerp, geeft de query een Booleaanse waarde terug die beschrijft of de persoon de fiets heeft gekocht en een set tabelwaarden die worden teruggegeven door de PredictHistogram (DMX)- functie, die beschrijven hoe de voorspelling is gedaan.

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  

Voorbeeld 2: OPENQUERY gebruiken

Het volgende voorbeeld laat zien hoe je een batchvoorspellingsquery kunt maken door gebruik te maken van een lijst van potentiële klanten die in een externe dataset zijn opgeslagen. Omdat de tabel deel uitmaakt van een databronweergave die is gedefinieerd op een instantie van Analysis Services, kan de query OPENQUERY gebruiken om de data op te halen. Omdat de namen van de kolommen in de tabel verschillen van die in het mijnbouwmodel, moet de ON-clausule worden gebruikt om de kolommen in de tabel te mappen naar de kolommen in het model.

De zoekopdracht geeft de voor- en achternaam van elke persoon in de tabel terug, samen met een Booleaanse kolom die aangeeft of elke persoon waarschijnlijk een fiets zal kopen, waarbij 0 betekent "waarschijnlijk zal geen fiets kopen" en 1 betekent "waarschijnlijk een fiets zal kopen". De laatste kolom bevat de kans voor het voorspelde resultaat.

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]  

Om de dataset te beperken tot alleen de klanten die naar verwachting een fiets zullen kopen, en vervolgens de lijst te sorteren op klantnaam, kun je een WHERE-clausule en een ORDER BY-clausule toevoegen aan het vorige voorbeeld:

WHERE [BIKE Buyer]  
ORDER BY [LastName] ASC  

Voorbeeld 3: Associaties voorspellen

Het volgende voorbeeld laat zien hoe een voorspelling te maken met behulp van een model dat is opgebouwd uit het Microsoft Association-algoritme. Voorspellingen op een associatiemodel kunnen worden gebruikt om gerelateerde producten aan te bevelen. Bijvoorbeeld, de volgende zoekopdracht geeft de drie producten terug die het meest waarschijnlijk samen worden gekocht:

  • Mountainbikefleshouder

  • Mountainbike binnenband

  • Mountain-200

De Predict (DMX) functie is polymorf en kan met alle modeltypes worden gebruikt. Je gebruikt de waarde3 als argument voor de functie om het aantal items dat door de query wordt teruggegeven te beperken. De SELECT-lijst die volgt op de NATURAL PREDICTION JOIN-clausule levert de waarden die als input voor voorspelling worden gebruikt.

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  

Voorbeeldresultaten:

Expression.Model
HL Mountain Tire
Waterfles
Fender Set - Berg

Omdat de kolom die het voorspelbare attribuut bevat, [v Assoc Seq Line Items], een tabelkolom is, geeft de query een enkele kolom terug die een geneste tabel bevat. Standaard heet Expressionde kolom geneste tabel . Als je provider geen hiërarchische rijsets ondersteunt, kun je het FLATTENED-trefwoord gebruiken zoals in dit voorbeeld getoond om de resultaten gemakkelijker te bekijken.