共用方式為


巢狀數據表 (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 回溯相容性

在 SQL Server SQL Server Analysis Services 中,數據必須饋送至數據採礦演算法,作為案例數據表中包含的一系列案例。 不過,並非所有案例都可以由單一數據列來描述。 例如,案例可能衍生自兩個數據表:一個包含客戶信息的數據表,另一個數據表則包含客戶購買。 客戶資訊數據表中的單一客戶在客戶購買數據表中可能有多個專案,因此很難使用單一數據列來描述數據。 SQL Server Analysis Services 提供處理這些案例的唯一方法,方法是使用 巢狀數據表。 下圖示範巢狀數據表的概念。

使用巢狀數據表結合的兩個數據表,

在此圖表中,第一個數據表是父數據表,包含客戶的相關信息,併為每個客戶建立唯一標識符的關聯。 第二個數據表子數據表包含每個客戶的購買。 子數據表中的購買專案會依唯一標識符、CustomerKey 數據行,與父數據表相關。 圖表中的第三個數據表會顯示合併的兩個數據表。

巢狀數據表以特殊數據行表示,其數據類型為 table TABLE。 對於任何特定案例數據列,這種數據行包含與父數據表相關的子數據表中選取的數據列。

巢狀數據表中的數據可用於預測或輸入,或用於兩者。 例如,您可能在模型中有兩個巢狀數據表數據行:一個巢狀數據表數據行可能包含客戶已購買的產品清單,而另一個巢狀數據表數據行則包含客戶愛好和興趣的相關信息,可能是從問卷中取得。 在此案例中,您可以使用客戶的愛好和興趣作為分析購買行為,並預測可能購買的輸入。

聯結案例數據表和巢狀數據表

若要建立巢狀數據表,這兩個源數據表必須包含已定義的關聯性,讓一個數據表中的專案可以與其他數據表相關。 在 SQL Server Data Tools 中,您可以在數據源檢視中定義此關聯性。

注意

CustomerKey 欄位是關係型索引鍵,用來連結案例數據表和數據源檢視定義內的巢狀數據表,以及建立採礦結構內數據行的關聯性。 不過,通常您不應該在該結構上建置的採礦模型中使用此關係型索引鍵。 通常最好省略採礦模型中的關係型索引鍵數據行,如果它只提供聯結數據表,而且不會提供有趣的分析資訊。

您可以使用數據採礦延伸模組 (DMX) 或分析管理物件 (AMO) 以程式設計方式建立巢狀數據表,也可以在 SQL Server Data Tools 中使用數據採礦精靈和數據採礦設計師。

在採礦模型中使用巢狀數據表數據行

在案例數據表中,索引鍵通常是客戶標識符、產品名稱或數列中的日期:可唯一識別數據表中數據列的數據。 . 不過,在巢狀數據表中,索引鍵通常不是關係型索引鍵(或外鍵),而是代表您要建立模型之屬性的數據行。

例如,如果案例數據表包含訂單,而巢狀數據表包含順序中的專案,您會有興趣將儲存在巢狀數據表中的專案之間的關聯性模型化,這些關聯性會儲存在案例數據表中。 因此,雖然 Items 巢狀數據表是由關係索引鍵 OrderID聯結至 Orders 案例數據表,但是您不應該使用 OrderID 做為巢狀數據表索引鍵。 相反地,您會選取 Items 數據行做為巢狀數據表索引鍵,因為該數據行包含您想要建立模型的數據。 在大部分情況下,您可以放心忽略採礦模型中 OrderID,因為案例數據表與巢狀數據表之間的關聯性已經由數據源檢視定義建立。

當您選擇要作為巢狀數據表索引鍵的數據行時,您必須確定該資料行中的值對於每個案例而言都是唯一的。 例如,如果案例數據表代表客戶,而巢狀數據表代表客戶購買的專案,您必須確定每個客戶未列出任何專案一次以上。 如果客戶已多次購買相同的專案,您可能會想要建立不同的檢視,該檢視具有匯總每個唯一產品購買計數的數據行。

您決定如何處理巢狀數據表中的重複值,取決於您建立的採礦模型,以及您正在解決的業務問題。 在某些情況下,您可能不在乎客戶購買特定產品多少次,但想要檢查是否有至少一次購買。 在其他案例中,購買的數量和順序可能非常重要。

如果項目的順序很重要,您可能需要指出序列的其他數據行。 當您使用時序群集演算法來建立模型時,您必須選擇其他 索引鍵序列 資料行來表示項目的順序。 索引鍵序列數據行是一種特殊的巢狀索引鍵,僅適用於時序群集模型,而且需要唯一的數值數據類型。 例如,整數和日期都可以當做索引鍵序列數據行使用,但所有序列值都必須是唯一的。 除了索引鍵順序數據行之外,時序群集模型也有巢狀數據表索引鍵,代表正在建立模型的屬性,例如已購買的產品。

從巢狀數據表使用非索引鍵巢狀數據行

定義案例數據表與巢狀數據表之間的聯結之後,而且您已選擇包含要當做巢狀數據表索引鍵之有趣且唯一屬性的數據行,您可以包含巢狀數據表中的其他數據行,以做為模型的輸入。 巢狀數據表中的所有數據行都可用於輸入、預測和輸入,或只用於預測。

例如,如果巢狀數據表包含 Product數據行、ProductQuantityProductPrice,您可以選擇 Product 做為巢狀數據表索引鍵,但將 ProductQuantity 新增至採礦結構以作為輸入。

篩選巢狀數據表數據

在 SQL Server 2017 中,您可以針對用來定型或測試數據採礦模型的數據建立篩選。 篩選可用來影響模型的組成,或測試案例子集上的模型。 篩選也可以套用至巢狀數據表。 不過,語法有一定限制,可以搭配巢狀數據表使用。

當您將篩選套用至巢狀數據表時,通常會測試屬性是否存在或不存在。 例如,您可以套用篩選條件,將模型中所使用的案例限製為只套用巢狀數據表中具有指定值的案例。 或者,您可以將模型中所使用的案例限製為未購買特定項目的客戶。

當您在巢狀數據表上建立篩選時,也可以使用大於或小於等運算符。 例如,您可以將模型中所使用的案例限製為已購買至少 n 個目標產品單位的客戶。 篩選巢狀數據表屬性的能力為自定義模型提供了極大的彈性。

如需如何建立和使用模型篩選的詳細資訊,請參閱採礦模型的 篩選(Analysis Services - 數據採礦)

另請參閱

數據採礦演算法 (Analysis Services - 數據採礦)
採礦結構 (Analysis Services - 數據採礦)