SELECT FROM <model> PREDICTION JOIN (DMX)
適用於:SQL Server Analysis Services
使用採礦模型來預測外部數據源中的數據行狀態。 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
選擇性。 整數,指定要傳回的數據列數目。
選取表達式清單
衍生自採礦模型之數據行標識符和表達式的逗號分隔清單。
model
模型標識碼。
子選取
內嵌的 select 語句。
源數據查詢
來源查詢。
聯結對應清單
選擇性。 邏輯表達式,會比較模型中的數據行與來源查詢中的數據行。
條件表達式
選擇性。 限制從數據行清單傳回之值的條件。
expression
選擇性。 傳回純量值的運算式。
備註
ON 子句會定義來源查詢的數據行與採礦模型中數據行之間的對應。 此對應可用來將源查詢中的數據行導向採礦模型中的資料行,以便數據行做為輸入來建立預測。 <聯結對應清單中的>數據行是使用等號 (=), 相關,如下列範例所示:
[MiningModel].ColumnA = [source data query].Column1 AND
[MiningModel].ColumnB = [source data query].Column2 AND
...
如果您要在 ON 子句中系結巢狀數據表,請確定您系結索引鍵數據行與任何非索引鍵數據行,讓演算法可以正確識別巢狀數據行所屬的記錄。
預測聯結的來源查詢可以是數據表或單一查詢。
您可以指定預測函式,這些預測函式不會傳<回選取表達式清單中的>數據表運算式和<條件表達式。>
NATURAL PREDICTION JOIN 會自動將來源查詢中的數據行名稱對應在一起,以符合模型中的數據行名稱。 如果您使用 NATURAL PREDICTION,可以省略 ON 子句。
WHERE 條件只能套用至可預測的數據行或相關數據行。
ORDER by 子句只能接受單一數據行做為自變數;也就是說,您無法排序多個數據行。
範例 1:單一查詢
下列範例示範如何建立查詢,以預測特定人員是否會實時購買自行車。 在此查詢中,數據不會儲存在數據表或其他數據源中,而是直接輸入查詢。 查詢中的人員具有下列特性:
35 歲
擁有房子
擁有兩輛車
家裡有兩個孩子
使用TM判定樹採礦模型和主體的已知特性,查詢會傳回布爾值,描述人員是否購買自行車,以及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 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]
若要將數據集限制為只有預測要購買自行車的客戶,然後依客戶名稱排序列表,您可以將 WHERE 子句和 ORDER BY 子句新增至上一個範例:
WHERE [BIKE Buyer]
ORDER BY [LastName] ASC
範例 3:預測關聯
下列範例示範如何使用從 Microsoft 關聯演算法建置的模型來建立預測。 關聯模型的預測可用來建議相關產品。 例如,下列查詢會傳回最有可能一起購買的三個產品:
Mountain Bottle Cage
登山車輪內胎
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 |
水瓶 |
芬德集 - 山 |
因為包含可預測屬性 [v Assoc Seq Line Items]
的數據行是 數據表數據行,所以查詢會傳回包含巢狀數據表的單一數據行。 根據預設,巢狀資料表資料列的名稱為 Expression
。 如果您的提供者不支援階層式數據列集,您可以使用 FLATTENED 關鍵詞,如本範例所示,讓結果更容易檢視。
另請參閱
SELECT (DMX)
數據採礦延伸模組 (DMX) 資料定義語句
數據採礦延伸模組 (DMX) 數據操作語句
資料採礦延伸模組 (DMX) 陳述式參考