SELECT FROM <model> PREDICTION JOIN (DMX)

Verwendet ein Miningmodell dazu, die Status von Spalten vorherzusagen, die zu einer externen Datenquelle gehören. Die PREDICTION JOIN-Anweisung gleicht jeden Fall aus der Quellabfrage mit dem Modell ab.

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

Argumente

  • n
    Optional. Eine ganze Zahl, die angibt, wie viele Zeilen zurückgegeben werden sollen.

  • select expression list
    Eine durch Trennzeichen getrennte Liste mit Spaltenbezeichnern und Ausdrücken, die aus dem Miningmodell abgeleitet sind.

  • model
    Ein Modellbezeichner.

  • sub select
    Eine eingebettete SELECT-Anweisung.

  • source data query
    Die Quellabfrage.

  • join mapping list
    Optional. Ein logischer Ausdruck, in dem Spalten aus dem Modell mit Spalten aus der Quellabfrage verglichen werden.

  • condition expression
    Optional. Eine Bedingung, die die Werte einschränkt, die für die Spaltenliste zurückgegeben werden.

  • expression
    Optional. Ein Ausdruck, der einen Skalarwert zurückgibt.

Hinweise

Die ON-Klausel definiert die Zuordnung zwischen den Spalten aus der Quellabfrage und den Spalten aus dem Miningmodell. Diese Zuordnung wird verwendet, um Spalten aus der Quellabfrage auf Spalten im Miningmodell zu richten, sodass die Spalten beim Erstellen der Vorhersagen als Eingaben verwendet werden können. Spalten in der Verknüpfungszuordnungsliste (<join mapping list>) werden mit Gleichheitszeichen (=) einander zugeordnet, wie das folgende Beispiel zeigt:

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

Wenn Sie in der ON-Klausel eine geschachtelte Tabelle binden, müssen Sie die Schlüsselspalte mit Nichtschlüsselspalten binden, damit der Algorithmus richtig ermitteln kann, zu welchem Fall der Datensatz der geschachtelten Spalte gehört.

Die Quellabfrage für die Vorhersageverknüpfung (PREDICTION JOIN) kann eine Tabellen- oder eine SINGLETON-Abfrage sein.

Sie können in der Auswahlausdrucksliste (<select expression list>) und im Bedingungsausdruck (<condition expression>) Vorhersagefunktionen angeben, die keinen Tabellenausdruck zurückgeben.

NATURAL PREDICTION JOIN ordnet Spaltennamen aus der Quellabfrage, die mit Spaltennamen im Modell übereinstimmen, automatisch einander zu. Wenn Sie NATURAL PREDICTION verwenden, können Sie auf die ON-Klausel verzichten.

Die WHERE-Bedingung kann nur für vorhersagbare Spalten oder verknüpfte Spalten übernommen werden.

Die ORDER BY-Klausel kann nur eine einzelne Spalte als Argument akzeptieren, das heißt, Sie können nicht nach mehreren Spalten sortieren.

Beispiel 1: SINGLETON-Abfrage

Im folgenden Beispiel wird erläutert, wie eine Abfrage erstellt wird, die in Echtzeit vorhersagt, ob eine bestimmte Person ein Fahrrad kauft. In dieser Abfrage werden die Daten nicht in einer Tabelle oder einer anderen Datenquelle gespeichert, sondern direkt in die Abfrage eingegeben. Die Person in der Abfrage hat folgende Merkmale:

  • 35 Jahre alt

  • Besitzt ein Haus

  • Besitzt zwei Autos

  • Hat zwei Kinder zu Hause

Für die Abfrage werden das TM Decision Tree-Miningmodell und die zu der Person bekannten Merkmale verwendet. Die Abfrage gibt sowohl einen booleschen Wert zurück, der beschreibt, ob die Person das Fahrrad gekauft hat, als auch ein Resultset in Tabellenform, das durch die PredictHistogram (DMX)-Funktion zurückgegeben wurde, und beschreibt, wie die Vorhersage zustande gekommen ist.

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

Beispiel 2: Verwenden von OPENQUERY

Im folgenden Beispiel wird erläutert, wie unter Verwendung einer Liste potenzieller Kunden, die in einem externen Dataset gespeichert sind, eine Batchvorhersageabfrage erstellt wird. Da die Tabelle Bestandteil einer Datenquellensicht ist, die in einer Instanz von Analysis Services definiert wurde, kann die Abfrage OPENQUERY verwenden, um die Daten abzurufen. Da sich die Namen der Spalten in der Tabelle von denjenigen in dem Miningmodell unterscheiden, muss die ON-Klausel verwendet werden, um die Spalten in der Tabelle den Spalten im Modell zuzuordnen.

Die Abfrage gibt Folgendes zurück: den Vor- und Nachnamen jeder Person in der Tabelle sowie eine boolesche Spalte, die angibt, ob die Personen voraussichtlich ein Fahrrad kauften, dabei bedeutet 0 „wird vermutlich kein Fahrrad kaufen“ und 1 „wird vermutlich ein Fahrrad kaufen“. Die letzte Spalte enthält die Wahrscheinlichkeit für das vorhergesagte Ergebnis.

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]

Um das Dataset auf die Kunden zu beschränken, die voraussichtlich ein Fahrrad kaufen werden, und um die Liste anschließend nach Kundennamen zu sortieren, können Sie dem vorstehenden Beispiel eine WHERE-Klausel und eine ORDER BY-Klausel hinzufügen.

WHERE [BIKE Buyer]
ORDER BY [LastName] ASC

Beispiel 3: Vorhersagen von Zuordnungen

Das folgende Beispiel zeigt, wie eine Vorhersage durch Verwenden eines Modells erstellt wird, das über den Microsoft Association-Algorithmus erstellt wurde. Vorhersagen über ein Zuordnungsmodell können verwendet werden, um zugehörige Produkte zu empfehlen. Die folgende Abfrage gibt beispielsweise die drei Produkte zurück, die höchstwahrscheinlich zusammen mit den folgenden drei Produkten gekauft werden:

  • Mountain Bottle Cage

  • Mountain Tire Tube

  • Mountain-200

Die Predict (DMX)-Funktion ist polymorph und kann mit allen Modelltypen verwendet werden. Sie verwenden den Wert3 als Argument für die Funktion, um die Anzahl der Elemente zu begrenzen, die von der Abfrage zurückgegeben werden. Die SELECT-Liste, die der NATURAL PREDICTION JOIN-Klausel folgt, stellt die Werte bereit, die als Eingabe für die Vorhersage verwendet werden.

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

Beispielergebnisse:

Expression.Model

HL Mountain Tire

Water Bottle

Fender Set – Mountain

Da die Spalte, die das vorhersagbare Attribut [v Assoc Seq Line Items] enthält, eine Tabellenspalte ist, gibt die Abfrage eine einzelne Spalte zurück, die eine geschachtelte Tabelle enthält. Die Spalte der geschachtelten Tabelle erhält standardmäßig den Namen Expression. Wenn Ihr Anbieter keine hierarchischen Rowsets unterstützt, können Sie das FLATTENED-Schlüsselwort verwenden, um die Ergebnisse übersichtlicher darzustellen, wie in diesem Beispiel dargestellt.