關聯模型查詢範例

適用于: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 取得模型中繼資料

從結構描述資料列集取得中繼資料

擷取模型的原始參數

擷取項目集和產品的清單

傳回前 10 個項目集

預測查詢

預測關聯的項目

判斷相關項目集的信心

尋找有關模型的資訊

所有的採礦模型都會公開演算法根據標準化結構描述所學習的內容,也稱為採礦模型結構描述資料列集。 您可以使用資料採礦延伸模組 (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 Association Rules Model; 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 Multidimensional 2012
MODEL_NAME 關聯
SERVICE_NAME 關聯規則模型
PREDICTION_ENTITY v Assoc Seq Line Items
MINING_STRUCTURE 關聯
LAST_PROCESSED 9/29/2007 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.40923449156529E-04,MINIMUM_IMPORTANCE=-999999999,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 = Existing
NODE_PROBABILITY 0.291283016331743
NODE_SUPPORT 4334
PURCHASEDPRODUCTS.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 = Existing

返回頂端

使用模型進行預測

關聯規則模型常用來根據項目集中發現的關聯而產生建議。 因此,當您根據關聯規則模型建立預測查詢時,通常是使用模型中的規則來根據新資料進行猜測。 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
Water Bottle 2866 0.19262 0.175205
Patch kit 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
Water Bottle = Existing 2866 v Assoc Seq Line Items(Water Bottle)
Mountain Bottle Cage = Existing, Water Bottle = Existing 1136 v Assoc Seq Line Items(Water Bottle)
Road Bottle Cage = Existing, Water Bottle = Existing 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 Association Algorithm
Microsoft 關聯分析演算法技術參考
關聯模型的採礦模型內容 (Analysis Services - 資料採礦)