共用方式為


採礦模型的篩選 (Analysis Services - 數據採礦)

適用於: SQL Server 2019 和舊版 Analysis Services Azure Analysis Services Fabric/Power BI Premium

重要

SQL Server 2017 Analysis Services 中已淘汰數據採礦,現在已在 SQL Server 2022 Analysis Services 中停止。 檔不會更新為已淘汰和已停止的功能。 若要深入瞭解,請參閱 Analysis Services 回溯相容性

以數據為基礎的模型篩選可協助您建立採礦模型,以在採礦結構中使用數據子集。 當您設計採礦結構和數據源時,篩選可提供彈性,因為您可以根據完整的數據源檢視建立單一採礦結構。 然後,您可以建立篩選,只使用該數據的一部分來定型和測試各種模型,而不是為每個數據子集建置不同的結構和相關模型。

例如,您可以在 Customers 數據表和相關資料表上定義數據源檢視。 接下來,您會定義單一採礦結構,其中包含您需要的所有欄位。 最後,您會建立根據特定客戶屬性篩選的模型,例如 Region。 然後,您可以輕鬆地製作該模型的複本,並只變更篩選條件,以根據不同的區域產生新的模型。

您可能會從這項功能獲益的一些實際案例包括:

  • 為離散值建立不同的模型,例如性別、區域等等。 例如,即使銷售數據來自所有客戶的單一數據源,服裝商店還是可能會使用客戶人口統計來建置個別的模型。

  • 藉由建立並測試相同數據的多個群組,例如年齡 20-30 與年齡 20-40 與 20-25 歲,以實驗模型。

  • 在巢狀數據表內容上指定複雜的篩選,例如只有在客戶已購買至少兩個特定專案時,才要求將案例包含在模型中。

本節說明如何建置、使用及管理採礦模型的篩選。

建立模型篩選

您可以透過下列方式建立和套用篩選:

  • 使用 [數據採礦設計師] 中的 [採礦模型] 索引卷標,以篩選編輯器對話框的協助建置條件。

  • 直接在採礦模型的 Filter 屬性中輸入篩選表達式。

  • 使用 AMO 以程式設計方式在模型上設定篩選條件。

使用數據採礦設計工具建立模型篩選

您可以變更採礦模型的 Filter 屬性,以篩選數據採礦設計師中的模型。 您可以將篩選表達式直接輸入 [屬性] 窗格,也可以開啟篩選對話框來建置條件。

有兩個篩選對話框。 第一個可讓您建立套用至案例數據表的條件。 如果數據源包含多個數據表,請先選取數據表,然後選取數據行並指定套用至該數據行的運算符和條件。 您可以使用 AND/OR 運算符來連結多個條件。 可用於定義值的運算符取決於數據行是否包含離散或連續值。 例如,使用連續值時,您可以使用大於 且小於 運算子 。 不過,對於離散值,您只能使用 = (等於)!= (不等於),而 為 null 運算符。

注意

不支援 LIKE 關鍵詞。 如果您想要包含多個離散屬性,您必須建立個別的條件,並使用 OR 運算符加以連結。

如果條件很複雜,您可以使用第二個篩選對話框一次處理一個數據表。 當您關閉第二個篩選對話框時,會評估表達式,然後結合案例數據表中其他數據行上設定的篩選條件。

在巢狀數據表上建立篩選

如果數據源檢視包含巢狀數據表,您可以使用第二個篩選對話框,在巢狀數據表中的數據列上建置條件。

例如,如果您的案例數據表與客戶相關,而巢狀數據表會顯示客戶已購買的產品,您可以使用巢狀數據表篩選條件中的下列語法,為已購買特定項目的客戶建立篩選:[ProductName]='Water Bottle' OR ProductName='Water Bottle Cage'

您也可以使用 EXISTSNOT EXISTS 關鍵詞和子查詢,來篩選巢狀數據表中特定值是否存在。 這可讓您建立條件,例如 EXISTS (SELECT * FROM Products WHERE ProductName='Water Bottle')。 如果巢狀資料表包含至少一個包含值的數據列,則 EXISTS SELECT(<subquery>)回 trueWater Bottle

您可以將案例數據表的條件與巢狀數據表上的條件結合。 例如,下列語法包含案例數據表的條件(Age > 30)、巢狀數據表上的子查詢(EXISTS (SELECT * FROM Products)),以及巢狀數據表上的多個條件(WHERE ProductName='Milk' AND Quantity>2)。

(Age > 30 AND EXISTS (SELECT * FROM Products WHERE ProductName='Milk'  AND Quantity>2) )  

當您完成建置篩選之後,篩選文字會由 SQL Server Analysis Services 評估、轉譯為 DMX 表達式,然後與模型一起儲存。

如需如何在 SQL Server Data Tools 中使用篩選對話框的指示,請參閱 將篩選套用至採礦模型

管理採礦模型篩選

數據型模型篩選可大幅簡化管理採礦結構和採礦模型的工作,因為您可以輕鬆地建立多個以相同結構為基礎的模型。 您也可以快速建立現有採礦模型的複本,然後只變更篩選條件。 不過,篩選可能會導致一些混淆。

以下是有關如何管理和解譯採礦模型篩選的一些常見問題:

如何判斷是否使用篩選?

有多種方式可以判斷篩選是否套用至模型:

  • 在設計工具中,按兩下 [採礦模型] 索引標籤,開啟 [屬性] ,然後檢視採礦模型 屬性

  • DMV DMSCHEMA_MINING_MODELS輸出包含篩選文字的數據行。 您可以在 DMV 上使用下列查詢來傳回模型的名稱及其篩選:

    SELECT MODEL_NAME, [FILTER]   
    FROM $SYSTEM.DMSCHEMA_MINING_MODELS  
    
    
  • 您可以在 AMO 中取得 MiningModel 物件的 Filter 屬性值,或檢查 XMLA 中的 Filter 元素。

您也可以為模型建立命名慣例,以反映篩選的內容。 這可讓您更輕鬆地區分相關的模型。

如何儲存篩選?

篩選表達式會儲存為與相關聯採礦模型或巢狀數據表一起儲存的腳本。 如果您刪除篩選文字,則只能藉由手動重新建立篩選表達式來還原。 因此,如果您建立複雜的篩選表達式,您應該建立篩選文字的備份複本。

為什麼我看不到篩選中的任何效果?

每當變更或新增篩選表示式時,您必須先重新處理結構和模型,才能檢視篩選的效果。

為什麼我在預測查詢結果中看到篩選的屬性?

當您將篩選套用至模型時,它只會影響用於定型模型的案例選擇。 篩選不會影響模型已知的屬性,或變更或隱藏數據源中的數據。 因此,針對模型的查詢可能會傳回其他類型的案例預測,而模型所使用的值下拉式清單可能會顯示篩選排除的屬性值。

例如,假設您只使用涉及 20-30 歲女性的案例來定型 [Bike Buyer] 模型。 您仍然可以執行預測查詢,預測男子購買自行車的機率,或預測 30-40 歲女性的結果。 這是因為數據源中存在的屬性和值會定義理論上可能的內容,而案例則定義用於定型的發生次數。 不過,這些查詢會傳回非常小的機率,因為定型數據不包含任何具有目標值的案例。

如果您需要完全隱藏或匿名模型中的屬性值,有各種選項:

  • 將傳入數據篩選為數據源檢視定義的一部分,或在關係型數據源中。

  • 遮罩或編碼屬性值。

  • 將排除的值折迭到類別中,做為採礦結構定義的一部分。

如需篩選語法和篩選表示式範例的詳細資訊,請參閱 模型篩選語法和範例(Analysis Services - 數據採礦)

如需如何在測試採礦模型時使用模型篩選的資訊,請參閱 選擇精確度圖表類型和設定圖表選項

另請參閱

模型篩選語法和範例 (Analysis Services - 數據採礦)
測試和驗證 (資料採礦)