SELECT FROM <model> PREDICTION JOIN (DMX)
使用採礦模型預測外部資料來源中的資料行狀態。PREDICTION JOIN 陳述式會將來源查詢中的每個案例與模型比對。
語法
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]]
引數
n
選擇性。指定要傳回多少資料列的整數。select expression list
從採礦模型衍生之資料行識別碼與運算式的逗號分隔清單。model
模型識別碼。sub select
內嵌的 SELECT 陳述式。source data query
來源查詢。join mapping list
選擇性。比較模型中的資料行與來源查詢中的資料行的邏輯運算式。condition expression
選擇性。限制從資料行清單傳回之值的條件。expression
選擇性。傳回純量值的運算式。
備註
ON 子句會定義來源查詢中的資料行與採礦模型中的資料行之間的對應。這個對應用於將來源查詢中的資料行導向採礦模型中的資料行,使資料行能做為建立預測時的輸入。<join mapping list> 中的資料行使用等號 (=) 產生關聯,如下列範例所示:
[MiningModel].ColumnA = [source data query].Column1 AND
[MiningModel].ColumnB = [source data query].Column2 AND
...
您若是在 ON 子句中繫結巢狀資料表,請確定是將索引鍵資料行繫結至任何非索引鍵資料行,讓演算法能夠正確地識別巢狀資料行的記錄屬於哪個案例。
預測聯結的來源查詢可以是資料表或單一查詢。
您可以在 <select expression list> 和 <condition expression> 中指定不傳回資料表運算式的預測函數。
NATURAL PREDICTION JOIN 會自動將模型中的資料行名稱,對應到符合的來源查詢資料行名稱。如果您使用 NATURAL PREDICTION,就可以省略 ON 子句。
WHERE 條件僅能套用到可預測的資料行或相關的資料行。
ORDER BY 子句僅能接受單一資料行做為引數,也就是說,您無法排序一個以上的資料行。
範例 1:單一查詢
下列範例顯示如何建立查詢,以預測某個特定的人是否會即時購買自行車。在此查詢中,資料不會儲存在資料表或其他資料來源中,但是會直接輸入到查詢中。查詢中的個人有下列特徵:
35 歲
擁有一棟房子
擁有兩部車
家裡有兩個小孩
查詢使用 TM Decision Tree 採礦模型與對象的已知特性傳回布林值,描述個人是否購買自行車,以及 PredictHistogram (DMX) 函數傳回的一組表格式值,描述如何進行預測。
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
範例 2:使用 OPENQUERY
下列範例顯示如何使用儲存在外部資料集中的潛在客戶清單,建立批次預測查詢。資料表是已經在 Analysis Services 執行個體上定義之資料來源檢視的一部分,因此,查詢可以使用 OPENQUERY 擷取資料。資料表中的資料行名稱與採礦模型中的資料行名稱不同,因此必須使用 ON 子句,將資料表中的資料行對應到模型中的資料行。
查詢會傳回資料表中每個人的名字與姓氏,以及表示每個人是否可能購買自行車,其中 0 表示「可能不會購買自行車」,而 1 表示「可能會購買自行車」。最後一個資料行包含預測結果的機率。
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]
若要將資料集限制為僅預測購買自行車的客戶,然後依客戶名稱排序清單,您可以將 WHERE 子句和 ORDER BY 子句加入到先前的範例中:
WHERE [BIKE Buyer]
ORDER BY [LastName] ASC
範例 3:預測關聯
下列範例顯示如何使用從 Microsoft 關聯分析演算法建立之模型建立預測。關聯模型的預測可用於建議相關的產品。例如,下列查詢會傳回最可能和下列三種產品一起購買的三項產品:
Mountain Bottle Cage
Mountain Tire Tube
Mountain-200
Predict (DMX) 函數是多型的,而且可以搭配所有模型類型使用。您可以使用 value3 做為函數的引數,以限制查詢所傳回的項目數目。在 NATURAL PREDICTION JOIN 子句後面的 SELECT 清單會提供當做預測輸入使用的值。
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
範例結果:
Expression.Model |
---|
HL Mountain Tire |
Water Bottle |
Fender Set - Mountain |
包含可預測屬性 [v Assoc Seq Line Items] 的資料行是資料表資料行,因此,查詢會傳回包含巢狀資料表的單一資料行。根據預設,巢狀資料表資料行的名稱為 Expression。如果您的提供者不支援階層式資料列集,您可以使用此範例所示的 FLATTENED 關鍵字,讓結果更容易檢視。