不規則階層是使用者定義的階層,具有層級數量不均的特徵。 常見範例包括一個組織圖,其中一位高層經理具有部門經理和非管理職員作為直接下屬,或由國家-地區-城市組成的地理階層,其中有些城市缺少父州或省,例如華盛頓特區、梵蒂岡城或新德里。
在維度中的大多數階層中,每個層級上方的成員數量與該層級中其他成員的上方成員數量相同。 不規則階層的不同之處在於,至少有一個成員的邏輯父層不在緊鄰該成員的上一層級。 發生這種情況時,階層會依據不同的下鑽路徑降至不同的層級。 在用戶端應用程式中,這可能會使向下切入路徑變得不必要的複雜。
用戶端應用程式在處理不規則階層方面的能力有所不同。 如果您的模型中存在不完全的階層,請準備好執行一些額外的工作,以取得您預期的轉譯行為。
在第一個步驟中,請檢查用戶端應用程式,以查看其如何處理向下切入路徑。 例如,Excel 會將父名稱重複用作缺失值的佔位符。 若要自行查看此行為,請使用 Adventure Works 多維度模型中的 Sales Territory 維度來建置數據透視表。 在具有銷售區域屬性的數據透視表中,包括群組、國家/地區和區域,您會看到缺少區域值的國家/地區將獲得一個佔位符,在此情況下,這個佔位符是其上方的父系(即國家名稱)的重複。 此行為衍生自 Excel 內固定的 MDX Compatibility=1 連接字串屬性。 如果用戶端不會自然提供您要尋找的向下切入行為,您可以在模型中設定屬性,以變更至少其中一些行為。
本主題包含下列幾節:
修改不完全階層中向下鑽取導覽的方法
當向下鑽研導覽未傳回預期的值或被視為使用不便時,破碎的階層的存在就會成為問題。 若要解決因不規則階層而導致的導覽問題,請考慮下列選項:
使用一般階層,但在每個層級上設定
HideMemberIf屬性,以指定是否將遺漏的層級可視化給使用者。 設定HideMemberIf時,您也應該在連接字串上設定MDXCompatibility,以覆寫預設導覽行為。 設定這些屬性的指示位於本主題中。建立明確管理層級成員的父子式階層。 如需技術圖例,請參閱 SSAS 中的不完全階層 (部落格文章) 。 如需《在線叢書》中的詳細資訊,請參閱 Parent-Child 階層。 建立父子式階層的缺點是每個維度只能有一個,而且在計算中繼成員的匯總時,通常會產生效能損失。
如果您的維度包含一個以上的不完全階層,您應該使用第一種方法,設定 HideMemberIf。 在處理不完全階層方面具有實際經驗的 BI 開發人員,更進一步主張在實體數據表中進行其他變更,為每個層級建立個別的數據表。 如需這項技術的詳細資訊,請參閱馬丁·梅森的 SSAS 金融 Cube-Part 1a-Ragged 階層(部落格)。
將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 | 隱藏佔位元值(例如空值或父層級中的重複值或項目),但顯示具有相關值的其他層級和節點。 |
MDX Compatibility=2 通常被視為在不規則階層方面的首選設置。 Reporting Services 報表和某些第三方用戶端應用程式可以保存此設定。 |
另請參閱
建立 User-Defined 階層
用戶階層
Parent-Child 階層
連接字串屬性 (Analysis Services)