共用方式為


課程 4-7 - 定義未知的成員和 Null 處理屬性

適用於: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

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

維度精靈和 Cube 精靈會根據維度的索引鍵屬性可為 Null 或雪花維度的根屬性是以可為 Null 的數據行為基礎,為您啟用這些屬性。 在這些情況下,索引鍵屬性的 NullProcessing 屬性會設定為 UnknownMember,且 UnknownMember 属性會設定為 Visible

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

在本主題的工作中,您會將產品類別和產品子類別屬性從您將新增至 Adventure Works DW 數據源檢視的 Snowflaked 數據表,將產品類別和產品子類別屬性新增至 Product 維度。 然後,您將啟用 Product 維度的 UnknownMember 屬性、指定 元件元件 做為 UnknownMemberName 属性的值、將 SubcategoryCategory 属性關聯至產品名稱屬性,然後定義連結雪花數據表之成員索引鍵屬性的自定義錯誤處理。

注意

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

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

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

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

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

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

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

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

  4. 檢閱金鑰和 Null 索引鍵錯誤組態屬性,但不會進行任何變更。

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

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

    ErrorConfiguration 屬性集合

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

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

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

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

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

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

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

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

  2. Included 物件 列表中,選取 [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. 切換至 [Product] 維度的 [維度設計師],然後按兩下 [維度結構] 索引標籤。

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

  8. 在 [數據源檢視] 窗格中,找出 [DimProductCategory 數據表],以滑鼠 右鍵單擊該數據表中的 productCategoryKey,然後按兩下 [從數據行新增屬性]。

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

  10. 在 [屬性] 視窗中,按兩下 [NameColumn 屬性欄位],然後按兩下 [瀏覽] [...] 按鈕,開啟 [名稱數據行] 對話框。

  11. 在 [來源] 數據行 列表中選取 [EnglishProductCategoryName ],然後按兩下 [確定]

  12. 在 [數據源檢視] 窗格中,找出 [DimProductSubcategory 數據表],以滑鼠 右鍵單擊該數據表中的 productSubcategoryKey,然後按兩下 [從數據行[新增屬性]。

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

  14. 在 [屬性] 視窗中,按兩下 [NameColumn 屬性欄位],然後按兩下 [瀏覽 ] 按鈕,開啟 [名稱數據行] 對話框。

  15. 在 [來源] 數據行 列表中選取 [EnglishProductSubcategoryName],然後按兩下 [確定]

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

  17. [所有產品] 指定為 [產品類別] 使用者定義階層 AllMemberName 屬性的值。

瀏覽產品維度中的 User-Defined 階層

  1. 在 [產品 維度] 維度之 [維度 設計師] 的 [維度 結構] 索引卷標的工具欄上,按兩下 [Process]。

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

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

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

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

    顯示 WHERE 子句的 SELECT DISTINCT 子句 SELECT DISTINCT 子句

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

  6. 針對 [產品] 維度,按兩下 [維度設計工具] 中的 [瀏覽器] 索引卷標,然後按兩下 [重新連線]。

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

  8. 在 [階層] 列表中選取 [產品類別],展開 [所有產品],然後展開 [元件]。

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

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

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

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

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

    UnknownMember 屬性變更為 VisibleHidden 會啟用維度的 UnknownMember 属性。

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

  4. 在圖表中,以滑鼠右鍵按兩下 子類別 屬性,然後選取 [[新增屬性關聯性]

  5. 在 [建立屬性關聯性] 對話框中,來源屬性子類別。 將 相關屬性 設定為 Category。 將關聯性類型設定為 彈性

  6. 按下 [確定]

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

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

  9. NullProcessing 屬性變更為 UnknownMember

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

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

  12. NullProcessing 屬性變更為 UnknownMember

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

再次瀏覽產品維度

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

  2. 部署順利完成時,按兩下 [維度設計師] 中 [Product] 維度的 [Browser] 索引卷標,然後按兩下 [重新連線]

  3. 確認已在 [階層] 列表中選取 [產品類別],然後展開 [所有產品]

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

  4. 展開 類別 層級 元件元件 成員,然後 展開 子類別 層級 元件元件 成員。

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

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

下一課

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