在 SQL Server Analysis Services 中,必須將數據輸入至數據採礦演算法,作為一系列包含在案例數據表中的案例。 不過,並非所有案例都可以由單一數據列來描述。 例如,案例可能衍生自兩個數據表:一個包含客戶信息的數據表,另一個數據表則包含客戶購買。 客戶資訊資料表中的單一客戶可能在客戶購買資料表中有多筆購買紀錄,因此很難用單行來描述這些數據。 Analysis Services 提供獨特的方法來處理這些案例,方法是使用 巢狀數據表。 下圖示範巢狀數據表的概念。
在此圖表中,第一個數據表是父數據表,包含客戶的相關信息,併為每個客戶建立唯一標識符的關聯。 第二個,即子資料表,存放每個客戶的購買記錄。 子表中的購買項目透過唯一識別碼 CustomerKey 欄,與父表相關聯。 圖表中的第三個數據表會顯示合併的兩個數據表。
巢狀數據表在案例數據表中會以資料類型為 TABLE 的特殊欄位來表示。 對於任何特定案例數據列,這種數據行包含與父數據表相關的子數據表中選取的數據列。
巢狀數據表中的數據可用於預測或輸入,或用於兩者。 例如,您可能在模型中有兩個巢狀數據表數據行:一個巢狀數據表數據行可能包含客戶已購買的產品清單,而另一個巢狀數據表數據行則包含客戶愛好和興趣的相關信息,可能是從問卷中取得。 在此情境中,您可以使用客戶的愛好和興趣作為分析購買行為和預測可能購入的資料來源。
聯結案例表和巢狀表格
若要建立巢狀數據表,這兩個源數據表必須包含已定義的關聯性,讓一個數據表中的專案可以與其他數據表相關。 在 SQL Server Data Tools (SSDT)中,您可以在數據源檢視中定義此關聯性。
備註
CustomerKey 字段是關係型索引鍵,用來連結案例數據表和數據源檢視定義內的巢狀數據表,以及建立採礦結構內數據行的關聯性。 不過,通常您不應該在該結構上建置的採礦模型中使用此關係型索引鍵。 通常在採礦模型中最好省略關係鍵欄位,如果它僅用於關聯數據表,且不提供對分析有用的資訊。
您可以使用數據採礦延伸模組 (DMX) 或分析管理物件 (AMO) 以程式設計方式建立巢狀數據表,也可以在 SQL Server Data Tools (SSDT) 中使用數據採礦精靈和數據採礦設計師。
在採礦模型中使用巢狀資料表的數據欄
在案例數據表中,索引鍵通常是客戶標識符、產品名稱或數列中的日期:可唯一識別數據表中數據列的數據。 . 不過,在巢狀數據表中,索引鍵通常不是關係型索引鍵(或外鍵),而是代表您要建立模型之屬性的數據行。
例如,如果案例表包含訂單,而巢狀表包含訂單中的項目,您會有興趣建立模型來表示存儲於案例表中的多個訂單之間的項目關係。 因此,雖然 Items 巢狀數據表會依關係索引鍵 OrderID 聯結至 Orders 案例數據表,但您不應該使用 OrderID 做為巢狀數據表索引鍵。 相反地,您會選取 Items 數據行做為巢狀數據表索引鍵,因為該數據行包含您想要建立模型的數據。 在大部分情況下,您可以放心地忽略採礦模型中的 OrderID ,因為案例數據表與巢狀數據表之間的關聯性已經由數據源檢視定義建立。
當您選擇要作為巢狀數據表索引鍵的數據行時,您必須確定該資料行中的值對於每個案例而言都是唯一的。 例如,如果案例表代表客戶,而巢狀表代表客戶購買的項目,您必須確保每個客戶的項目不會被列出超過一次。 如果客戶已多次購買相同的商品,您可能會想要建立不同的視圖,該視圖具有匯總每個唯一產品購買次數的欄。
您決定如何處理巢狀數據表中的重複值,取決於您建立的採礦模型,以及您正在解決的業務問題。 在某些情況下,您可能不在乎客戶購買特定產品多少次,但想要檢查是否有至少一次購買。 在其他案例中,購買的數量和順序可能非常重要。
如果項目的順序很重要,您可能需要一個額外的欄位來表示順序。 當您使用序列群集演算法來建立模型時,您必須選擇一個額外的 關鍵序列 欄來表示項目的順序。 密鑰序列欄是一種特殊的巢狀密鑰,僅適用於序列群集模型,而且需要唯一的數值數據類型。 例如,整數和日期都可以當做索引鍵序列數據行使用,但所有序列值都必須是唯一的。 除了重要順序欄位之外,時序群集模型也有巢狀表格索引鍵,代表正在被建模的屬性,例如已購買的產品。
從巢狀數據表使用非索引鍵巢狀數據行
定義案例數據表與巢狀數據表之間的聯結之後,而且您已選擇包含要當做巢狀數據表索引鍵之有趣且唯一屬性的數據行,您可以包含巢狀數據表中的其他數據行,以做為模型的輸入。 巢狀數據表中的所有數據行都可用於輸入、預測和輸入,或只用於預測。
例如,如果巢狀數據表包含 Product、ProductQuantity 和 ProductPrice 數據行,您可以選擇 Product 作為巢狀數據表索引鍵,但將 ProductQuantity 新增至採礦結構以做為輸入。
篩選巢狀數據表數據
在 SQL Server 2014 中,您可以針對用來定型或測試數據採礦模型的數據建立篩選。 filer 可用來影響模型的組成,或測試案例子集上的模型。 篩選也可以套用至巢狀數據表。 不過,巢狀數據表的語法使用上存在一定的限制。
當您將篩選套用至巢狀數據表時,通常會測試屬性是否存在或不存在。 例如,您可以套用篩選條件,將模型中所使用的案例限製為只套用巢狀數據表中具有指定值的案例。 或者,您可以將模型中所使用的案例限製為未購買特定項目的客戶。
當您在巢狀數據表上建立篩選時,也可以使用大於或小於等運算符。 例如,您可以將模型中所使用的案例限製為已購買至少 n 個目標產品單位的客戶。 篩選巢狀數據表屬性的能力為自定義模型提供了極大的彈性。
如需如何建立和使用模型篩選的詳細資訊,請參閱採礦模型的篩選(Analysis Services - 數據採礦)。
另請參閱
資料採礦演算法 (Analysis Services - 數據採礦)
採礦結構 (Analysis Services - 數據採礦)