共用方式為


定義未知的成員和 Null 處理屬性

當 Analysis Services 處理維度時,資料表中基礎資料行的所有相異值,或資料來源檢視中的檢視表都會填入維度中的屬性。 如果 Analysis Services 在處理期間遇到 Null 值,則根據預設,它會將此 Null 轉換成數值資料行的零,或轉換成字串資料行的空字串。 您可以在基礎關聯式資料倉儲的擷取、轉換和載入過程中,修改這些預設值或轉換 Null 值 (如果有的話)。 此外,您可以藉由設定三個屬性,讓 Analysis Services 將 Null 值轉換成指定的值:維度的 UnknownMemberUnknownMemberName 屬性,以及維度索引鍵屬性的 NullProcessing 屬性。

「維度精靈」和「Cube 精靈」將會根據維度的索引鍵屬性是否可為 Null,或者雪花維度的根屬性是否以可為 Null 的資料行為基礎,自動為您啟用這些屬性。 在這些情況下,索引鍵屬性 (attribute) 的 [NullProcessing] 屬性 (property) 將會設定為 [UnknownMember],而 [UnknownMember] 屬性 (property) 則會設定為 [可見]

但是,當您以累加方式建立雪花維度時 (就如同我們在這個教學課程中處理 [產品] 維度的方式一樣),或者當您使用 [維度設計師] 定義維度,然後將這些現有的維度合併到 Cube 中時,可能必須以手動方式設定 [UnknownMember] 和 [NullProcessing] 屬性。

在本主題中的工作中,您會將產品類別和產品子類別屬性從您將新增至 Adventure Works DW 資料來源檢視的雪花資料表,將產品類別和產品子類別屬性新增至 Product 維度。 接著,您將啟用 Product 維度的 UnknownMember 屬性、指定 Assembly ComponentsUnknownMemberName 屬性的值、將 SubcategoryCategory 屬性關聯至產品名稱屬性,然後為連結雪花資料表的成員索引鍵屬性定義自訂錯誤處理。

注意

如果您在最初使用 Cube 精靈定義 Analysis Services 教學課程 Cube 時新增了 Subcategory 和 Category 屬性,則會自動為您執行這些步驟。

在 [產品] 維度中檢閱錯誤處理方式和未知的成員屬性

  1. 請針對 [產品] 維度切換到 [維度設計師],按一下 [維度結構] 索引標籤,然後在 [屬性] 窗格中選取 [產品]

    這可讓您檢視及修改維度本身的屬性。

  2. 在 [屬性] 視窗中,檢閱 [UnknownMember] 和 [UnknownMemberName] 屬性。

    請注意,[UnknownMember] 屬性並未啟用,因為它的值是設定為 [無],而不是 [可見] 或 [隱藏],而且沒有為 [UnknownMemberName] 屬性指定任何名稱。

  3. 在 [屬性] 視窗的 [ErrorConfiguration] 屬性資料格中選取 [(自訂)],然後展開 [ErrorConfiguration] 屬性集合。

    將 [ErrorConfiguration] 屬性設定為 [(自訂)],可讓您檢視預設的錯誤組態設定,這麼做並不會變更任何設定。

  4. 檢閱索引鍵和 Null 索引鍵錯誤組態屬性,但不做任何變更。

    請注意,依預設,當 Null 索引鍵轉換成未知的成員時,會忽略與這項轉換相關的處理錯誤。

    下圖顯示 [ErrorConfiguration] 屬性集合的屬性設定。

    ErrorConfiguration 屬性集合

  5. 按一下[瀏覽器]索引標籤,確認已在 [階層] 清單中選取[產品型號行],然後展開 All Products

    請注意 [產品線] 層級的 5 個成員。

  6. 依序展開 [元件] 和 [模型名稱] 層級的未標記成員。

    這個層級包含在建立其他元件時所使用的組件元件,從 [Adjustable Race] 產品開始,如下圖所示。

    用來建置其他元件的元件元件

定義雪花資料表中的屬性和產品類別目錄使用者定義階層

  1. 開啟 Adventure Works DW 資料來源檢視的 [資料來源檢視] Designer,在 [圖表召集人] 窗格中選取 [轉售商銷售],然後按一下 [SQL Server Data Tools (SSDT) 的 [資料來源檢視] 功能表上的 [新增/移除物件]。

    此時會開啟 [加入/移除資料表] 對話方塊。

  2. 在 [包含的物件] 清單中,選取 [DimProduct (dbo)],然後按一下 [加入相關資料表]

    [DimProductSubcategory (dbo)] 和 [FactProductInventory (dbo)] 隨即加入。 移除 [FactProductInventory (dbo)],只將 [DimProductSubcategory (dbo)] 資料表加入 [包含的物件] 清單。

  3. 預設選取 [DimProductSubcategory (dbo)] 資料表作為最新加入的資料表之後,再按一次 [加入相關資料表]

    此時會將 [DimProductCategory (dbo)] 資料表加入 [包含的物件] 清單。

  4. 按一下 [確定] 。

  5. 在SQL Server Data Tools的 [格式] 功能表上,指向 [自動設定],然後按一下 [圖表]。

    請注意,[DimProductSubcategory (dbo)] 資料表和 [DimProductCategory (dbo)] 資料表彼此連結,並且透過 [Product] 資料表連結到 [ResellerSales] 資料表。

  6. 請針對 [產品] 維度切換到 [維度設計師],然後按一下 [維度結構] 索引標籤。

  7. 以滑鼠右鍵按一下 [資料來源檢視] 窗格中的任何位置,然後按一下 [顯示所有資料表]

  8. 在 [資料來源檢視] 窗格中,尋找 [DimProductCategory] 資料表,以滑鼠右鍵按一下該資料表中的 [ProductCategoryKey],然後按一下 [從資料行新增屬性]

  9. 在 [ 屬性] 窗格中,將這個新屬性的名稱變更為 Category

  10. 在屬性視窗中,按一下 [NameColumn] 屬性欄位,然後按一下流覽 (...) 按鈕以開啟 [名稱資料行] 對話方塊。

  11. 選取 [來源資料行] 清單中的 [EnglishProductCategoryName],然後按一下 [確定]

  12. 在 [資料來源檢視] 窗格中,尋找 [DimProductSubcategory] 資料表,以滑鼠右鍵按一下該資料表中的 [ProductSubcategoryKey],然後按一下 [從資料行新增屬性]

  13. 在 [ 屬性] 窗格中,將這個新屬性的名稱變更為 Subcategory

  14. 在屬性視窗中,按一下 [NameColumn] 屬性欄位,然後按一下流覽 (...) 按鈕以開啟 [名稱資料行] 對話方塊。

  15. 選取 [來源資料行] 清單中的 [EnglishProductSubcategoryName],然後按一下 [確定]

  16. 使用下列層級建立名為 Product Categories 的新使用者定義階層,依序從上到下: CategorySubcategory產品名稱

  17. 指定 All Products 為產品類別使用者定義階層之 AllMemberName 屬性的值。

在產品維度中瀏覽使用者定義階層

  1. 在 [產品] 維度的 [維度設計師] 的 [維度結構] 索引標籤的工具列上,按一下 [處理]

  2. 按一下 [是] 建立及部署專案,然後按一下 [執行] 處理 [產品] 維度。

  3. 處理成功之後,在 [處理進度] 對話方塊中依序展開 [Processing Dimension 'Product' completed successfully (產品維度已順利處理完成)]、[Processing Dimension Attribute 'Product Name' completed (產品名稱維度屬性已處理完成)] 和 [SQL 查詢 1]

  4. 按一下 SELECT DISTINCT 查詢,然後按一下 [檢視詳細資料]

    請注意,WHERE 子句已加入 SELECT DISTINCT 子句中,它會移除在 ProductSubcategoryKey 資料行中沒有值的那些產品,如下圖所示。

    顯示 WHERE 子句的 SELECT DISTINCT 子句

  5. 按三次 [關閉] 來關閉所有處理中的對話方塊。

  6. 請針對 [產品] 維度按一下 [維度設計師] 的 [瀏覽器] 索引標籤,然後按一下 [重新連接]

  7. 確認 [產品型號行 ] 出現在 [ 階層 ] 清單中,展開 ,然後展開 All Products [ 元件]。

  8. 選取 [階層] 清單中的 [產品類別],展開 All Products ,然後展開 [元件]。

    請注意,沒有任何組件元件出現。

若要修改上一個工作中提及的行為,您將啟用 Products 維度的UnknownMember 屬性、設定 UnknownMemberName屬性的值、將Model Name屬性的NullProcessing屬性 Subcategory 設定為UnknownMember、將 屬性定義為 Category 屬性的相關 Subcategory 屬性,然後將Product Line屬性定義為Model Name屬性的相關屬性。 這些步驟會導致 Analysis Services 針對沒有 SubcategoryKey 資料行值的每個產品使用未知的成員名稱值,如下列工作所示。

啟用未知的成員、定義屬性關聯性及指定 Null 的自訂處理屬性

  1. 在 [產品] 維度的 [維度設計師] 中,按一下 [維度結構] 索引標籤,然後在 [屬性] 窗格中選取 [產品]

  2. 在 [ 屬性] 視窗中,將 UnknownMember 屬性變更為 Visible,然後將 UnknownMemberName 屬性的值變更為 Assembly Components

    將 [UnknownMember] 屬性變更為 [可見] 或 [隱藏] 會啟用維度的 [UnknownMember] 屬性。

  3. 按一下 [屬性關聯性] 索引標籤。

  4. 在圖表中,以滑鼠右鍵按一下 Subcategory 屬性,然後選取 [新增屬性關聯性]。

  5. 在 [ 建立屬性關聯性 ] 對話方塊中, [來源屬性 ] 是 Subcategory 。 將 [相關屬性 ] 設定為 Category 。 然後,保持關聯性類型設定為 [彈性]

  6. 按一下 [確定] 。

  7. 在 [屬性] 窗格中,選取 [子類別目錄]

  8. 在 [屬性] 視窗中,展開 [KeyColumns] 屬性,然後展開 [DimProductSubcategory.ProductSubcategoryKey (Integer)] 屬性。

  9. 將 [NullProcessing] 屬性變更為 [UnknownMember]

  10. 在 [屬性] 窗格中,選取 [模型名稱]

  11. 在 [屬性] 視窗中,展開 [KeyColumns] 屬性,然後展開 [Product.ModelName (WChar)] 屬性。

  12. 將 [NullProcessing] 屬性變更為 [UnknownMember]

    由於這些變更,當 Analysis Services 在處理期間遇到屬性或模型名稱屬性的 Null 值 Subcategory 時,未知的成員值會取代為索引鍵值,而且會正確建構使用者定義的階層。

再次瀏覽 [產品] 維度

  1. 在 [建立] 功能表上,按一下 [部署 Analysis Services 教學課程]

  2. 順利完成部署之後,針對 [產品] 維度按一下 [維度設計師] 的 [瀏覽器] 索引標籤,然後按一下 [重新連接]

  3. 確認已在 [階層] 清單中選取[產品類別],然後展開 All Products

    請注意,此時「組件元件」會出現成為 [類別目錄] 層級的新成員。

  4. 展開層級 Assembly Components 的成員 Category ,然後展開 Assembly Components 層級的成員 Subcategory

    請注意,所有組件元件現在都會出現在 [產品名稱] 層級,如下圖所示。

    顯示元件元件的產品名稱層級

下一課

第 5 課:定義維度與量值群組之間的關聯性