關聯模型查詢範例
適用于: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) 語句,或使用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 - 資料採礦)
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應