共用方式為


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

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

維度精靈和 Cube 精靈會根據條件來啟用這些屬性,具體來說,如果維度的鍵屬性可以為 Null,或者雪花維度的根屬性是基於可為 Null 的欄位,則會這樣設定。 在這些情況下,索引鍵屬性的NullProcessing會設定為UnknownMember,而UnknownMember則設定為Visible

不過,當您以累加方式建置雪狀維度時,如同我們在本教學課程中使用 Product 維度,或使用維度設計師定義維度,然後將這些現有維度併入 Cube 時,可能需要手動設定 UnknownMemberNullProcessing 屬性。

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

備註

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

檢視產品維度中的錯誤處理和未知成員屬性.

  1. 切換至 [產品] 維度的 [維度設計師],按兩下 [維度結構] 索引卷標,然後在 [屬性] 窗格中選取 [產品]。

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

  2. 在 [屬性] 視窗中,檢閱 UnknownMemberUnknownMemberName 屬性。

    請注意, UnknownMember 屬性未啟用,因為其值 設定為 None ,而不是 VisibleHidden,而且 UnknownMemberName 屬性未指定任何名稱。

  3. 在 [屬性] 視窗中,選取 ErrorConfiguration 屬性單元格中的 [自定義],然後展開 ErrorConfiguration 屬性集合。

    ErrorConfiguration 屬性設定為 (custom) 可讓您檢視預設的錯誤組態設定 - 它不會變更任何設定。

  4. 檢閱鍵值和空鍵值錯誤的組態屬性,但不需更改。

    請注意,根據預設,當 Null 索引鍵被轉換為未知的成員時,與此轉換相關的處理錯誤會被忽略。

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

    ErrorConfiguration 屬性集合 ErrorConfiguration

  5. 點選 [瀏覽器] 標籤,確認在 [階層] 清單中選取了 [產品型號行],然後展開 All Products

    請注意 Product Line 層級的五個成員。

  6. 展開 [元件],然後展開 [模型名稱 ] 層級的未標記成員。

    此層級包含在建置其他元件時所使用的組裝元件,從 可調整賽道 產品開始,如下圖所示。

    用於組裝其他元件的組裝元件

定義 Snowflaked 資料表和產品類別 User-Defined 層級的屬性

  1. 開啟 Adventure Works DW 數據源檢視的 [數據源檢視設計師],在 [圖表召集人] 窗格中選取 [轉售商銷售],然後按兩下 [SQL Server Data Tools ][SSDT] 的 [數據源檢視] 功能表上的 [新增/移除物件]。

    [ 新增/移除數據表] 對話框隨即開啟。

  2. 在 [ 包含的物件 ] 清單中,選取 [DimProduct ][dbo],然後按兩下 [ 新增相關數據表]。

    同時新增 DimProductSubcategory (dbo)FactProductInventory (dbo)。 拿掉 FactProductInventory (dbo) ,以便只將 DimProductSubcategory (dbo) 數據表新增至 Included 物件 清單。

  3. 默認選取 DimProductSubcategory (dbo) 數據表做為最近新增的數據表,再次按兩下 [新增相關數據表 ]。

    DimProductCategory (dbo) 數據表會新增至 Included 物件清單。

  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 屬性的值。

瀏覽產品維度中的 User-Defined 等級结构

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

  2. 按兩下 [是 ] 建置和部署專案,然後按兩下 [ 執行 ] 以處理 Product 維度。

  3. 處理成功時,在 [處理進度] 對話框中展開 [處理維度 'Product' 已完成],展開 [處理維度屬性 '產品名稱] 已完成,然後展開 [SQL 查詢 1]。

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

    請注意,WHERE 子句已新增至 SELECT DISTINCT 子句,以移除 ProductSubcategoryKey 數據行中沒有值的這些產品,如下圖所示。

    顯示 WHERE 子句中獨特的 SELECT 子句

  5. 按兩下 [ 關閉 三次] 以關閉所有處理對話框。

  6. 在 [維度設計師] 中點擊 [瀏覽器] 索引標籤以查看 產品 維度,然後點擊 [重新連線]

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

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

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

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

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

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

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

    UnknownMember 屬性變更為 VisibleHidden 會啟用維度的 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 在處理期間遇到Subcategory屬性或模型名稱屬性的 Null 值時,未知的成員值會被取代為索引鍵值,而且使用者定義的階層會得到正確建構。

再次瀏覽產品維度

  1. 組建 功能表上,按一下部署 Analysis Services 教學課程

  2. 部署成功完成時,按一下 [維度設計師] 中 [產品] 維度的 [瀏覽器] 索引標籤,然後按一下 [重新連線]。

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

    請注意,組件元件會顯示為類別層級的新成員。

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

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

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

下一課

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