關聯模型查詢範例
適用於: SQL Server 2019 和舊版 Analysis Services Azure Analysis Services Fabric/Power BI Premium
重要
SQL Server 2017 Analysis Services 中已淘汰數據採礦,現在已在 SQL Server 2022 Analysis Services 中停止。 檔不會更新為已淘汰和已停止的功能。 若要深入瞭解,請參閱 Analysis Services 回溯相容性。
當您針對數據採礦模型建立查詢時,您可以建立內容查詢,以提供分析期間所探索的規則和專案集詳細數據,或者您可以建立預測查詢,該查詢會使用數據中探索到的關聯來進行預測。 對於關聯模型,預測通常以規則為基礎,而且可用來提出建議,而內容上的查詢通常會探索專案集之間的關聯性。 您也可以擷取模型的相關元數據。
本節說明如何為以Microsoft關聯規則演算法為基礎的模型建立這類查詢。
內容查詢
使用 DMX 取得模型元數據數據
預測查詢
尋找模型的相關信息
所有採礦模型都會根據標準化架構公開演算法所學習的內容,此架構名為採礦模型架構數據列集。 您可以使用數據採礦延伸模組 (DMX) 語句,或使用 SQL Server Analysis Services 預存程式,針對採礦模型架構數據列集建立查詢。 在 SQL Server 2017 中,您也可以使用類似 SQL 的語法,直接查詢架構數據列集作為系統數據表。
範例查詢 1:使用 DMX 取得模型元數據
下列查詢會傳回關聯模型的基本元數據,Association
,例如模型的名稱、儲存模型的資料庫,以及模型中的子節點數目。 此查詢會使用 DMX 內容查詢,從模型的父節點擷取元數據:
SELECT MODEL_CATALOG, MODEL_NAME, NODE_CAPTION,
NODE_SUPPORT, [CHILDREN_CARDINALITY], NODE_DESCRIPTION
FROM Association.CONTENT
WHERE NODE_TYPE = 1
注意
您必須以括弧括住數據行的名稱CHILDREN_CARDINALITY,才能與相同名稱的 MDX 保留關鍵詞區別。
範例結果:
排 | 元數據 |
---|---|
MODEL_CATALOG | 關聯測試 |
MODEL_NAME | 協會 |
NODE_CAPTION | 關聯規則模型 |
NODE_SUPPORT | 14879 |
CHILDREN_CARDINALITY | 942 |
NODE_DESCRIPTION | 關聯規則模型;ITEMSET_COUNT=679;RULE_COUNT=263;MIN_SUPPORT=14;MAX_SUPPORT=4334;MIN_ITEMSET_SIZE=0;MAX_ITEMSET_SIZE=3;MIN_PROBABILITY=0.400390625;MAX_PROBABILITY=1;MIN_LIFT=0.14309369632511;MAX_LIFT=1.95758227647523 |
如需關聯模型中這些數據行的意義定義,請參閱 關聯模型的採礦模型內容(Analysis Services - 數據採礦)。
範例查詢 2:從架構數據列集取得其他元數據
藉由查詢數據採礦架構數據列集,您可以找到 DMX 內容查詢中傳回的相同資訊。 不過,架構數據列集會提供一些額外的數據行,例如模型上次處理的日期、採礦結構,以及用來作為可預測屬性的數據行名稱。
SELECT MODEL_CATALOG, MODEL_NAME, SERVICE_NAME, PREDICTION_ENTITY,
MINING_STRUCTURE, LAST_PROCESSED
FROM $system.DMSCHEMA_MINING_MODELS
WHERE MODEL_NAME = 'Association'
範例結果:
排 | 元數據 |
---|---|
MODEL_CATALOG | Adventure Works DW 多維度 2012 |
MODEL_NAME | 協會 |
SERVICE_NAME | 關聯規則模型 |
PREDICTION_ENTITY | v Assoc Seq Line Items |
MINING_STRUCTURE | 協會 |
LAST_PROCESSED | 2007/9/29 下午 10:21:24 |
範例查詢 3:擷取模型的原始參數
下列查詢會傳回單一數據行,其中包含建立模型時所使用的參數設定詳細數據。
SELECT MINING_PARAMETERS
from $system.DMSCHEMA_MINING_MODELS
WHERE MODEL_NAME = 'Association'
範例結果:
MAXIMUM_ITEMSET_COUNT=200000,MAXIMUM_ITEMSET_SIZE=3,MAXIMUM_SUPPORT=1,MINIMUM_SUPPORT=9.4092349156529E-04,MINIMUM_IMPORTANCE=-9999999999,MINIMUM_ITEMSET_SIZE=0,MINIMUM_PROBABILITY=0.4
尋找規則和專案集的相關信息
關聯模型有兩個常見的用法:探索頻繁專案集的相關信息,以及擷取特定規則和專案集的詳細數據。 例如,您可能想要擷取評分為特別有趣的規則清單,或建立最常見的項目集清單。 您可以使用 DMX 內容查詢來擷取這類資訊。 您也可以使用 Microsoft 關聯檢視器來瀏覽此資訊。
範例查詢 4:擷取專案集和產品清單
下列查詢會擷取所有專案集,以及列出每個專案集中所含產品的巢狀數據表。 NODE_NAME數據行包含模型內專案集的唯一標識符,而NODE_CAPTION則提供專案的文字描述。 在此範例中,巢狀數據表會扁平化,讓包含兩個產品的專案集在結果中產生兩個數據列。 如果您的用戶端支援階層式數據,您可以省略 FLATTENED 關鍵詞。
SELECT FLATTENED NODE_NAME, NODE_CAPTION,
NODE_PROBABILITY, NODE_SUPPORT,
(SELECT ATTRIBUTE_NAME FROM NODE_DISTRIBUTION) as PurchasedProducts
FROM Association.CONTENT
WHERE NODE_TYPE = 7
範例結果:
排 | 元數據 |
---|---|
NODE_NAME | 37 |
NODE_CAPTION | Sport-100 = 現有 |
NODE_PROBABILITY | 0.291283016331743 |
NODE_SUPPORT | 4334 |
已購買的產品。ATTRIBUTE_NAME | v Assoc Seq Line Items(Sport-100) |
範例查詢 5:傳回前 10 個專案集
此範例示範如何使用 DMX 預設提供的一些分組和排序函式。 查詢會依每個節點的支援排序時,傳回前 10 個專案集。 請注意,您不需要明確地將結果分組,就像在 Transact-SQL 中一樣;不過,每個查詢中只能使用一個聚合函數。
SELECT TOP 10 (NODE_SUPPORT),NODE_NAME, NODE_CAPTION
FROM Association.CONTENT
WHERE NODE_TYPE = 7
範例結果:
排 | 元數據 |
---|---|
NODE_SUPPORT | 4334 |
NODE_NAME | 37 |
NODE_CAPTION | Sport-100 = 現有 |
使用模型進行預測
關聯規則模型通常用來產生建議,這些建議是以專案集中探索到的相互關聯為基礎。 因此,當您根據關聯規則模型建立預測查詢時,通常會使用模型中的規則,根據新數據進行猜測。 PredictAssociation (DMX) 是傳回建議的函式,而且有數個自變數可用來自定義查詢結果。
關聯模型查詢可能很有用的另一個範例是傳回各種規則和專案集的信賴度,以便比較不同交叉銷售策略的有效性。 下列範例說明如何建立這類查詢。
範例查詢 6:預測相關聯的專案
此範例會使用 元數據採礦教學課程 (Analysis Services - 數據採礦)中建立的關聯模型。 它示範如何建立預測查詢,告訴您要向購買特定產品的客戶建議哪些產品。 這種類型的查詢,您可以在其中提供值給 SELECT 中的模型...UNION 語句稱為單一查詢。 由於對應至新值的可預測模型數據行是巢狀數據表,所以您必須使用一個 SELECT 子句,將新值對應至巢狀數據表數據行、[Model]
,以及另一個 SELECT 子句,將巢狀數據表數據行對應至案例層級數據行,[v Assoc Seq Line Items]
。 將 關鍵詞 INCLUDE-STATISTICS 新增至查詢可讓您查看建議的機率和支援。
SELECT PredictAssociation([Association].[vAssocSeqLineItems],INCLUDE_STATISTICS, 3)
FROM [Association]
NATURAL PREDICTION JOIN
(SELECT
(SELECT 'Classic Vest' as [Model])
AS [v Assoc Seq Line Items])
AS t
範例結果:
型 | $SUPPORT | $PROBABILITY | $ADJUSTEDPROBABILITY |
---|---|---|---|
Sport-100 | 4334 | 0.291283 | 0.252696 |
水瓶 | 2866 | 0.19262 | 0.175205 |
修補程式套件 | 2113 | 0.142012 | 0.132389 |
範例查詢 7:判斷相關專案集的信賴度
雖然規則對於產生建議很有用,但專案集對於更深入地分析數據集中的模式更為有趣。 例如,如果您對先前範例查詢所傳回的建議不滿意,您可以檢查包含產品 A 的其他專案集,以進一步了解產品 A 是人們傾向於使用各種產品購買的配件,或 A 是否與購買特定產品有強烈關聯。 探索這些關聯性最簡單的方式是篩選Microsoft關聯查看器中的專案集;不過,您可以使用查詢來擷取相同的資訊。
下列範例查詢會傳回包含 Water Bottle 專案的所有專案集,包括單一專案 Water bottle。
SELECT TOP 100 FROM
(
SELECT FLATTENED NODE_CAPTION, NODE_SUPPORT,
(SELECT ATTRIBUTE_NAME from NODE_DISTRIBUTION
WHERE ATTRIBUTE_NAME = 'v Assoc Seq Line Items(Water Bottle)') as D
FROM Association.CONTENT
WHERE NODE_TYPE = 7
) AS Items
WHERE [D.ATTRIBUTE_NAME] <> NULL
ORDER BY NODE_SUPPORT DESC
範例結果:
NODE_CAPTION | NODE_SUPPORT | D.ATTRIBUTE_NAME |
---|---|---|
水瓶 = 現有 | 2866 | v Assoc Seq Line Items(Water Bottle) |
山瓶籠 = 現有,水瓶 = 現有 | 1136 | v Assoc Seq Line Items(Water Bottle) |
路瓶籠 = 現有,水瓶 = 現有 | 1068 | v Assoc Seq Line Items(Water Bottle) |
Water Bottle = Existing, Sport-100 = Existing | 734 | v Assoc Seq Line Items(Water Bottle) |
此查詢會從符合準則的巢狀數據表傳回數據列,以及來自外部或案例數據表的所有數據列。 因此,您必須新增條件,以排除具有目標屬性名稱 Null 值的案例數據表數據列。
函式清單
所有Microsoft演算法都支援一組常見的函式。 不過,Microsoft關聯演算法支援下表所列的其他函式。
預測函數 | 用法 |
---|---|
IsDescendant (DMX) | 判斷某個節點是否為類神經網路圖形中另一個節點的子節點。 |
IsInNode (DMX) | 指出指定的節點是否包含目前的案例。 |
PredictAdjustedProbability (DMX) | 傳回加權機率。 |
PredictAssociation (DMX) | 預測關聯數據集中的成員資格。 |
PredictHistogram (DMX) | 傳回與目前預測值相關的值數據表。 |
PredictNodeId (DMX) | 傳回每個案例的Node_ID。 |
PredictProbability (DMX) | 傳回預測值的機率。 |
PredictSupport (DMX) | 傳回指定狀態的支援值。 |
PredictVariance (DMX) | 傳回預測值的變異數。 |
另請參閱
Microsoft 關聯演算法
Microsoft 關聯演算法技術參考
關聯模型的採礦模型內容 (Analysis Services - 數據採礦)