共用方式為


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

當 Microsoft SQL Server 2005 Analysis Services (SSAS) 處理維度時,資料來源檢視中之資料表或檢視內基礎資料行的所有相異值會在維度中擴展屬性。如果 Analysis Services 在處理期間發現 Null 值,依預設,如果是數值資料行,它會將這個 Null 值轉換成零;如果是字串資料行,則會轉換成空白字串,因此並不會發生任何錯誤。您可以在基礎關聯式資料倉儲的擷取、轉換和載入過程中,修改這些預設值或轉換 Null 值 (如果有的話)。您也可以設定下列三個屬性,指定由 Analysis Service 將 Null 值轉換成指定的值:維度的 [UnknownMember][UnknownMemberName] 屬性,以及維度索引鍵屬性的 [NullProcessing] 屬性。

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

ms170707.note(zh-tw,SQL.90).gif附註:
未知的成員的預設值是 [未知]。您可以設定 [UnknownMemberName] 屬性的值來指定不同的值。

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

您將會在下一項工作中看到,當 Analysis Services 處理雪花維度時,除非您修改某些屬性的設定,否則 Analysis Services 會針對連結雪花資料表的資料行,移除具有 Null 值的屬性成員。這時並不會發生任何錯誤,因為依預設,Analysis Services 會忽略這類錯誤;依預設,[NullKeyCovertedToUnknown] 屬性會設定為 [IgnoreError]。Analysis Services 會移除具有 Null 值的屬性成員,否則它會在兩個雪花資料表之間執行內部聯結。

您可以採取下列步驟來控制 Analysis Services 在這種情況下如何執行處理:

  • 對維度啟用 [UnknownMember] 屬性。
  • 對維度指定 [UnknownMemberName] 屬性的值。
  • 設定適當連結維度屬性的屬性關聯性。
  • 針對將雪花資料表連結在一起的索引鍵資料行,定義自訂錯誤處理方式。

在這個主題的工作中,您會從雪花資料表將產品類別目錄和產品子類別目錄屬性加入 [產品] 維度中,而且您將把雪花資料表加入 Adventure Works DW 資料來源檢視中。接著,您會為 [產品] 維度啟用 [UnknownMember] 屬性、指定「組件元件」作為 [UnknownMemberName] 屬性的值、使 [子類別目錄][類別目錄] 屬性與產品名稱屬性產生關聯,然後為連結雪花資料表的成員索引鍵屬性定義自訂的錯誤處理方式。

ms170707.note(zh-tw,SQL.90).gif附註:
如果您最初使用「Cube 精靈」定義 Analysis Services 教學課程 Cube 時已經加入了 [子類別目錄] 和 [類別目錄] 屬性,就會自動執行這些步驟。

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

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

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

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

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

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

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

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

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

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

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

    ErrorConfiguration 屬性集合

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

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

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

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

    用來建立其他元件的組件元件

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

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

  1. 請針對 Adventure Works DW 資料來源檢視,開啟資料來源檢視設計師,選取 [圖表組合管理] 窗格中的 [轉售商銷售],再按一下 Business Intelligence Development Studio 的 [資料來源檢視] 功能表中的 [加入/移除資料表]

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

  2. [包含的物件] 清單中,選取 [dbo.DimProduct],再按一下 [加入關聯資料表]

    此時會將 [dbo.DimProductSubcategory] 資料表加入 [包含的物件] 清單中。

  3. 依預設,會選取 [dbo.DimProductSubcategory] 資料表作為最新加入的資料表,請再按一下 [加入相關資料表]

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

  4. 按一下 [確定]

  5. 在 BI Development Studio 的 [格式] 功能表上,指向 [自動配置],再按一下 [圖表]

    請注意,[dbo.DimProductSubcategory] 資料表和 [dbo.DimProductCategory] 資料表彼此連結,並且透過 [產品] 資料表連結到 [ResellerSales] 資料表,如下圖所示。

    顯示資料表間連結的圖表

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

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

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

  9. [屬性] 窗格中,將這個新屬性的名稱變更為類別目錄

  10. [屬性] 視窗中,按一下 [NameColumn] 屬性資料格,選取 [(新增)],然後在 [物件繫結] 對話方塊中,於 [來源資料表] 欄位中指定 [DimProductCategory],於 [來源資料行] 欄位中指定 [EnglishProductCategoryName],再按一下 [確定]

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

  12. [屬性] 窗格中,將這個新屬性的名稱變更為子類別目錄

  13. [屬性] 視窗中,按一下 [NameColumn] 屬性資料格,選取 [(新增)],然後在 [物件繫結] 對話方塊中,於 [來源資料表] 欄位中指定 [DimProductSubcategory],於 [來源資料行] 欄位中指定 [EnglishProductSubcategoryName],再按一下 [確定]

  14. 建立稱為 [產品類別目錄] 的新使用者自訂階層,其中含有下列層級,由上往下依序為:[類別目錄][子類別目錄][產品名稱]

  15. 指定 All Products 作為 [產品類別目錄] 使用者自訂階層之 [AllMemberName] 屬性的值。

在產品維度中瀏覽使用者自訂階層

在產品維度中瀏覽使用者自訂階層

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

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

  3. 處理成功之後,在 [處理進度] 對話方塊中依序展開 [產品維度已順利處理完成][產品名稱維度屬性已順利處理完成][SQL 查詢 1]

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

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

    顯示 WHERE 子句的 SELECT DISTINCT 子句

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

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

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

    請注意,因為 SELECT DISTINCT 陳述式中的 WHERE 子句的緣故,而遺漏了所有組件元件清單,如下圖所示。

    顯示遺漏之元件的階層清單

  8. 選取 [階層] 清單中的 [產品類別目錄],依序展開 [所有產品][元件]

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

若要修改上一項工作中提到的行為,您需要啟用 [產品] 維度的 [UnknownMember] 屬性、設定 [UnknownMemberName] 屬性的值、將 [子類別目錄][模型名稱] 屬性的 [NullProcessing] 屬性設定為 [UnknownMember]、將 [類別目錄] 屬性定義為 [子類別目錄] 屬性的相關屬性,然後將 [產品線] 屬性定義為 [模型名稱] 屬性的相關屬性。這些步驟將會使 Analysis Services 在沒有 [SubcategoryKey] 資料行值的每一項產品中使用未知的成員名稱值,如下一項工作所示。

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

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

  1. 請針對 [產品] 維度按一下維度設計師的 [維度結構] 索引標籤。

  2. [屬性] 視窗中,將 [產品] 維度的 [UnknownMember] 屬性變更為 [可見],再將這個維度的 [UnknownMemberName] 屬性值變更為組件元件

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

  3. [屬性] 窗格中,展開下列屬性:

    • 產品名稱
    • 子類別目錄
    • 模型名稱

    請注意,[產品線][模型名稱] 屬性相關,因此會間接連結到 [產品名稱] 索引鍵屬性。也請注意,[子類別目錄] 屬性並未定義任何屬性關聯性,而且 [類別目錄] 屬性是透過索引鍵屬性直接連結到 [產品名稱] 屬性。

  4. [產品名稱] 屬性將 [類別目錄] 屬性關聯性拖曳到 [子類別目錄] 屬性。

    [類別目錄] 屬性現在是透過 [子類別目錄] 屬性連結到事實資料表的資料列,而後者又再透過 [產品名稱] 屬性連結到事實資料表的資料列。

  5. [屬性] 窗格中選取 [子類別目錄],之後,在 [屬性] 視窗的 [KeyColumns] 屬性資料格中,按一下省略符號按鈕 ([…])。

  6. [DataItem 集合編輯器] 對話方塊中,將 [NullProcessing] 屬性變更為 [UnknownMember],如下圖所示。

    DataItem 集合編輯器對話方塊

  7. 按一下 [確定]

  8. [屬性] 窗格中選取 [模型名稱],之後,在 [屬性] 視窗的 [KeyColumns] 屬性資料格中,按一下省略符號按鈕 ([…])。

  9. [DataItem 集合編輯器] 對話方塊中,將 [NullProcessing] 屬性變更為 [UnknownMember],再按一下 [確定]

    由於這些變更,當 Analysis Services 在處理期間,發現 [子類別目錄] 屬性或 [模型名稱] 屬性是 Null 值時,未知的成員值會替換成索引鍵值,而使用者自訂階層將可正確建構。

再次瀏覽 [產品] 維度

瀏覽 [產品] 維度

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

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

  3. 確認已在 [階層] 清單中選取 [產品類別目錄],再展開 [所有產品]

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

  4. 展開 [類別目錄] 層級的 [組件元件] 成員,然後再展開 [子類別目錄] 層級的 [組件元件] 成員。

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

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

  5. 選取 [階層] 清單中的 [產品型號線],然後依序展開 [所有產品][產品線] 層級的 [組件元件] 成員,以及 [模型名稱] 層級的 [組件元件] 成員。

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

ms170707.note(zh-tw,SQL.90).gif附註:
您可以下載並安裝更新的範例,以取得第 4 課已完成的專案。如需詳細資訊,請參閱<安裝範例>中的「取得更新的範例」。

下一課

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