不完全階層
不完全階層是使用者定義的階層,它具有不平均的層級數。 常見的範例包括高層管理人員擁有部門經理和非經理角色之直接下屬的組織圖,或是由國家 (地區)-區域-城市組成的地理階層,其中某些城市缺少上層的州或省,例如華盛頓特區、梵蒂岡城或新德里。
對於某個維度中的大多數階層而言,每一個層級之上的成員數都與相同層級的任何其他成員相同。 不完全階層則不同,因為其中至少一個成員的邏輯成員不在成員的上一層級內。 若發生此情形,階層會向下延伸至不同層級的不同鑽研路徑。 在用戶端應用程式內,這可能會讓鑽研路徑變得很複雜,這是不必要的。
用戶端應用程式處理不完全階層的方式各不相同。 如果不完全階層存在於您的模型中,請準備進行一些額外的工作來取得您所預期的轉譯行為。
在第一個步驟中,請檢查用戶端應用程式,以了解它如何處理鑽研路徑。 例如,Excel 會重複父系名稱當做遺漏值的預留位置。 若要自行查看這個行為,請在 Adventure Works 多維度模型中使用 Sales Territory 維度建置樞紐分析表。 在擁有 Sales Territory 屬性 Group、Country 和 Region 的樞紐分析表中,您將會看到遺漏地區值的國家 (地區) 得到預留位置,在此情況下為其上之父系的重複 (國家 (地區) 名稱)。 這個行為衍生自 Excel 內固定的 MDX Compatibility=1 連接字串屬性。 如果用戶端並未自然地提供您要尋找的鑽研行為,您可以在模型中設定屬性,至少變更其中的一些行為。
本主題包含下列章節:
在不完全階層中修改鑽研導覽的方法
設定 HideMemberIf 來隱藏一般階層中的成員
設定 MDX 相容性來決定要如何在用戶端應用程式中表示預留位置
在不完全階層中修改鑽研導覽的方法
當鑽研導覽未傳回預期值或者被視為難以使用時,不完全階層的存在就會變成問題。 若要修正不完全階層所導致的問題,請考量以下選項:
使用一般階層,但是在每個層級上設定 HideMemberIf 屬性來指定使用者是否可看到遺漏的層級。 當設定 HideMemberIf 時,您也應該在連接字串上設定 MDXCompatibility 來覆寫預設導覽行為。 本主題將提供設定這些屬性的指示。
建立可以明確方式管理層級成員的父子式階層。 如需這項技術的說明,請參閱 SSAS 中的不完全階層 (部落格文章)。 如需線上叢書中的詳細資訊,請參閱<父子式維度>。 建立父子式階層的缺點如下:一個維度只能有一個階層,而且當您計算中繼成員的彙總時,通常會導致效能降低。
如果您的維度包含一個以上的不完全階層,您應該使用第一個方法,設定 HideMemberIf。 對於處理不完全階層有實務經驗的 BI 開發人員進一步提議在實體資料表中進行其他變更,為每個層級建立個別的資料表。 如需這項技術的詳細資料,請參閱 Martin Mason 的 SSAS 財務 Cube – 1a 部分 – 不完全階層 (部落格)。
設定 HideMemberIf 來隱藏一般階層中的成員
在不完全維度的資料表中,在邏輯上遺漏的成員可以不同方式來表示。 資料表資料格可包含 Null 或空字串,或者它們可以包含與它們父系相同的值以做為一個預留位置。 預留位置的表示是由子成員的預留位置狀態 (如同 HideMemberIf 屬性所決定) 以及用戶端應用程式的 MDX Compatibility 連接字串屬性所決定。
如果是支援不完全階層顯示的用戶端應用程式,您可以使用這些屬性來隱藏在邏輯上遺漏的成員。
在 SSDT 中按兩下維度,在維度設計師中加以開啟。 第一個索引標籤 [維度結構] 會在 [階層] 窗格中顯示屬性階層。
以滑鼠右鍵按一下此階層中的成員,並選取 [屬性]。 將 HideMemberIf 設定為底下描述的其中一個值。
HideMemberIf 設定
描述
Never
永不隱藏層級成員。 此為預設值。
OnlyChildWithNoName
當層級成員是父系的唯一子系,且其名稱是 Null 或空白字串時,會隱藏層級成員。
OnlyChildWithParentName
當層級成員是父系的唯一子系,且其名稱與其父系名稱相同時,會隱藏層級成員。
NoName
當層級成員名稱空白時,會隱藏層級成員。
ParentName
當層級成員名稱與其父系名稱相同時,會隱藏層級成員。
設定 MDX 相容性來決定要如何在用戶端應用程式中表示預留位置
在階層層級上設定 HideMemberIf 之後,您也應該在從用戶端應用程式傳送的連接字串中設定 MDX Compatibility 屬性。 MDX Compatibility 設定會決定是否使用 HideMemberIf。
MDX 相容性設定 |
描述 |
使用方式 |
---|---|---|
1 |
顯示預留位置的值。 |
這是 Excel、SSDT 和 SSMS 使用的預設值。 它會指示伺服器在不完全階層中向下鑽研空的層級時,傳回預留位置的值。 如果您按一下預留位置的值,您可以繼續往下前往子節點 (分葉節點)。 Excel 擁有用來連接到 Analysis Services 的連接字串,而且它永遠都會針對每個新的連接將 MDX Compatibility 設定為 1。 這個行為會保留回溯相容性。 |
2 |
隱藏預留位置的值 (Null 值或父層級的重複),但是會顯示具有相關值的其他層級和節點。 |
就不完全階層而言,MDX Compatibility=2 通常會視為慣用設定。 Reporting Services 報表和某些協力廠商用戶端應用程式可以保留這項設定。 |