內容查詢 (資料採礦)
適用於: SQL Server 2019 和舊版 Analysis Services
Azure Analysis Services
Fabric/Power BI Premium
重要
SQL Server 2017 Analysis Services 中已淘汰數據採礦,現在已在 SQL Server 2022 Analysis Services 中停止。 檔不會更新為已淘汰和已停止的功能。 若要深入瞭解,請參閱 Analysis Services 回溯相容性。
內容查詢是擷取採礦模型內部統計數據和結構相關信息的方法。 有時候,內容查詢可以提供查看器中無法輕易取得的詳細數據。 您也可以使用內容查詢的結果,以程序設計方式擷取其他用途的資訊。
本節提供您可以使用內容查詢擷取之資訊類型的一般資訊,以及內容查詢的一般 DMX 語法。
在模型模式上 查詢
基本內容查詢
您可以使用預測查詢產生器建立內容查詢、使用 SQL Server Management Studio 中提供的 DMX 內容查詢範本,或直接在 DMX 中撰寫查詢。 不同於預測查詢,您不需要聯結外部數據,因此內容查詢很容易撰寫。
本節提供您可以建立之內容查詢類型的概觀。
採礦結構或案例數據的查詢可讓您檢視用於定型的詳細數據。
模型的查詢可以傳回模式、屬性清單、公式等等。
結構和案例數據的查詢
DMX 支援對用來建置採礦結構和模型的快取數據進行查詢。 根據預設,當您定義採礦結構時,會建立此快取,並在處理結構或模型時填入。
警告
如果您需要將數據分成定型和測試集,則無法清除或刪除此快取。 如果清除快取,您就無法查詢案例數據。
下列範例示範在案例數據上建立查詢的常見模式,或採礦結構中數據的查詢:
取得模型的所有案例
SELECT FROM <model>.CASES
使用此語句可從用來建置模型的案例數據擷取指定的數據行。 您必須擁有模型的鑽研許可權,才能執行此查詢。
檢視結構中包含的所有數據
SELECT FROM <structure>.CASES
使用此語句來檢視結構中包含的所有數據,包括未包含在特定採礦模型中的數據行。 您必須擁有模型的鑽研許可權,以及結構上的鑽研許可權,才能從採礦結構擷取數據。
取得值範圍
SELECT DISTINCT RangeMin(<column>), RangeMax(<column>) FROM <model>
使用此語句來尋找連續數據行的最小值、最大值和平均值,或 DISCRETIZED 資料行的貯體。
取得相異值
SELECT DISTINCT <column>FROM <model>
使用此語句來擷取 DISCRETE 資料行的所有值。 請勿將此語句用於 DISCRETIZED 資料行;請改用 RangeMin 和 RangeMax 函式。
尋找用來定型模型或結構的案例
SELECT FROM <mining structure.CASES WHERE IsTrainingCase()
使用此語句取得定型模型中使用的完整數據集。
尋找用於測試模型或結構
SELECT FROM <mining structure.CASES WHERE IsTestingCase()
使用此語句來取得已保留的數據,以測試與特定結構相關的採礦模型。
從特定模型模式鑽研到基礎案例數據
SELECT FROM <model>.CASESWHERE IsTrainingCase() AND IsInNode(<node>)
使用此語句可從定型的模型擷取詳細的案例數據。 您必須指定特定的節點:例如,您必須知道叢集的節點標識碼、判定樹的特定分支等等。此外,您必須擁有模型的鑽研許可權,才能執行此查詢。
模型模式、統計數據和屬性的查詢
數據採礦模型的內容適用於許多用途。 透過模型內容查詢,您可以:
擷取公式或機率,以便進行您自己的計算。
針對關聯模型,擷取用來產生預測的規則。
擷取特定規則的描述,讓您可以在自定義應用程式中使用規則。
檢視時間序列模型偵測到的移動平均值。
取得趨勢線某個區段的回歸公式。
擷取識別為特定叢集一部分的客戶可採取動作的資訊。
下列範例示範在模型內容上建立查詢的一些常見模式:
從模型取得模式
SELECT FROM <model>.CONTENT
使用此語句來擷取模型中特定節點的詳細資訊。 根據演算法類型,節點可以包含規則和公式、支援和變異數統計數據等等。
擷取定型模型中使用的屬性
CALL System.GetModelAttributes(<model>)
使用此預存程式來擷取模型所使用的屬性清單。 這項資訊有助於判斷因特徵選取而排除的屬性,例如。
擷取儲存在數據採礦維度中的內容
SELECT FROM <model>.DIMENSIONCONTENT
使用此語句從數據採礦維度擷取數據。
此查詢類型主要是供內部使用。 不過,並非所有演算法都支援這項功能。 MINING_SERVICES架構數據列集中的旗標表示支援。
如果您開發自己的外掛程式演算法,您可以使用此語句來驗證模型的內容以進行測試。
取得模型 的 PMML 表示法
SELECT * FROM <model>.PMML
取得 XML 檔,表示 PMML 格式的模型。 並非所有模型類型都受到支援。
例子
雖然某些模型內容是演算法的標準,但內容的某些部分會根據您用來建置模型的演算法而有很大的差異。 因此,當您建立內容查詢時,必須瞭解模型中哪些資訊對特定模型最有用。
本節提供一些範例,說明演算法的選擇如何影響模型中儲存的資訊種類。 如需採礦模型內容的詳細資訊,以及每個模型類型特有的內容,請參閱 採礦模型內容(Analysis Services - 數據採礦)。
範例 1:關聯模型的內容查詢
根據您查詢的模型類型而定,語句 SELECT FROM <model>.CONTENT
會傳回不同類型的資訊。 對於關聯模型,資訊的主要部分是 節點類型。 節點就像是模型內容中資訊的容器。 在關聯模型中,代表規則的節點具有8的NODE_TYPE值,而代表專案集的節點NODE_TYPE值為7。
因此,下列查詢會傳回前 10 個專案集,依支援排名 (預設順序)。
SELECT TOP 10 NODE_DESCRIPTION, NODE_PROBABILITY, SUPPORT
FROM <model>.CONTENT WHERE NODE_TYPE = 7
下列查詢是以這項資訊為基礎。 查詢會傳回三個數據行:節點的標識碼、完整規則,以及專案集右側的產品,也就是預測要與某些其他產品建立關聯的產品,做為專案集的一部分。
SELECT FLATTENED NODE_UNIQUE_NAME, NODE_DESCRIPTION,
(SELECT RIGHT(ATTRIBUTE_NAME, (LEN(ATTRIBUTE_NAME)-LEN('Association model name')))
FROM NODE_DISTRIBUTION
WHERE LEN(ATTRIBUTE_NAME)>2
)
AS RightSideProduct
FROM [<Association model name>].CONTENT
WHERE NODE_TYPE = 8
ORDER BY NODE_SUPPORT DESC
FLATTENED 關鍵詞表示巢狀數據列集應該轉換成扁平化數據表。 代表規則右側產品的屬性包含在NODE_DISTRIBUTION數據表中;因此,我們只會藉由新增長度大於 2 的需求,只擷取包含屬性名稱的數據列。
簡單的字串函式可用來從第三個數據行中移除模型的名稱。 (通常模型名稱前面會加上巢狀數據行的值。
WHERE 子句指定NODE_TYPE的值應該是 8,只擷取規則。
如需更多範例,請參閱 關聯模型查詢範例。
範例 2:判定樹模型的內容查詢
判定樹模型可用於預測和分類。 此範例假設您使用模型來預測結果,但您也想要找出哪些因素或規則可用來分類結果。
在判定樹模型中,節點可用來表示樹狀結構和分葉節點。 每個節點的標題都包含結果路徑的描述。 因此,若要追蹤任何特定結果的路徑,您必須識別包含它的節點,並取得該節點的詳細數據。
在預測查詢中,您會將預測函式新增 PredictNodeId (DMX),以取得相關節點的標識碼,如下列範例所示:
SELECT Predict([Bike Buyer]), PredictNodeID([Bike Buyer])
FROM [<decision tree model name>]
PREDICTION JOIN
<input rowset>
一旦您擁有包含結果之節點的標識符,您可以藉由建立包含NODE_CAPTION的內容查詢來擷取說明預測的規則或路徑,如下所示:
SELECT NODE_CAPTION
FROM [<decision tree model name>]
WHERE NODE_UNIQUE_NAME= '<node id>'
如需更多範例,請參閱 判定樹模型查詢範例。
使用查詢結果
如範例所示,內容查詢大多會傳回表格式數據列集,但也可能包含巢狀數據行的資訊。 您可以扁平化傳回的數據列集,但這會使使用結果更加複雜。 特別是NODE_DISTRIBUTION節點的內容是巢狀的,但包含模型的相關有趣資訊。
如需如何使用階層式數據列集的詳細資訊,請參閱 MSDN 上的 OLEDB 規格。