共用方式為


User-Defined 階層 - 不完全的階層

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

不完全的階層是使用者定義的階層,其層級數目不平均。 常見範例包括一個組織結構,其中一位高層經理具有部門經理和非經理作為直接報告,或由國家/地區城市組成的地理階層,其中有些城市缺少父州或省,例如華盛頓特區、梵蒂岡城或新德里。

對於維度中的大多數階層,每個層級的成員數目都與相同層級的任何其他成員相同。 不完全的階層不同,因為至少一個成員的邏輯父系不在成員正上方的層級中。 發生這種情況時,階層會針對不同的向下鑽研路徑遞減至不同的層級。 在用戶端應用程式中,這可能會使向下切入路徑變得不必要的複雜。

用戶端應用程式會因處理不完全階層的方式而有所不同。 如果您的模型中存在不完全的階層,請準備好執行一些額外的工作,以取得您預期的轉譯行為。

在第一個步驟中,請檢查用戶端應用程式,以查看其如何處理向下切入路徑。 例如,Excel 會將父名稱重複為遺漏值的佔位元。 若要自行查看此行為,請使用 Adventure Works 多維度模型中的 Sales Territory 維度來建置數據透視表。 在具有 Sales Territory 屬性群組、國家/地區和區域的數據透視表中,您會看到缺少區域值的國家/地區會取得佔位元,在此情況下,其上方的父系重複 (國家/地區名稱)。 此行為衍生自 Excel 內固定的 MDX Compatibility=1 連接字串屬性。 如果用戶端不會自然提供您要尋找的向下切入行為,您可以在模型中設定屬性,以變更至少其中一些行為。

本主題包含下列各節:

修改不完全階層中向下鑽研流覽的方法

當向下鑽研導覽未傳回預期的值或被視為尷尬使用時,不完全階層的存在就會成為問題。 若要修正因階層不完全而導致的瀏覽問題,請考慮下列選項:

  • 使用一般階層,但在每個層級上設定 HideMemberIf 屬性,以指定遺漏的層級是否對用戶可視化。 設定 HideMemberIf時,您也應該在連接字串上設定 MDXCompatibility,以覆寫預設導覽行為。 設定這些屬性的指示位於本主題中。

  • 建立明確管理層級成員的父子式階層。 如需技術圖例,請參閱 SSAS 中 不完全階層。 如需《在線叢書》中的詳細資訊,請參閱 Parent-Child 維度。 建立父子式階層的缺點是每個維度只能有一個,而且在計算中繼成員的匯總時,通常會產生效能損失。

如果您的維度包含一個以上的不完全階層,您應該使用第一種方法,設定 HideMemberIf。 在處理不完全階層方面具有實際經驗的 BI 開發人員,更進一步主張在實體數據表中進行其他變更,為每個層級建立個別的數據表。 如需這項技術的詳細資訊,請參閱 馬丁·梅森的 SSAS 金融 Cube-Part 1a-Ragged 階層(部落格)

將HideMemberIf設定為隱藏一般階層中的成員

在不完全維度的數據表中,邏輯上遺漏的成員可以用不同的方式來表示。 數據表單元格可以包含 Null 或空字串,或者可以包含與其父代相同的值,做為佔位元。 佔位元的表示法取決於子成員的佔位元狀態,如用戶端應用程式的 HideMemberIf 屬性所決定,以及 MDX 相容性 連接字串屬性所決定。

對於支持顯示不完全階層的用戶端應用程式,您可以使用這些屬性來隱藏邏輯上遺漏的成員。

  1. 在 SSDT 中,按兩下維度以在維度設計工具中開啟它。 第一個索引標籤 [維度結構] 會在 [階層] 窗格中顯示屬性階層。

  2. 以滑鼠右鍵按兩下階層中的成員,然後選取 [[屬性]。 將hideMemberIf 設定為下列其中一個值。

    HideMemberIf 設定 描述
    永不 層級成員永遠不會隱藏。 這是預設值。
    OnlyChildWithNoName 當層級成員是其父系的唯一子系,且其名稱為 null 或空字串時,就會隱藏該成員。
    OnlyChildWithParentName 當層級成員是其父系的唯一子系,且其名稱與父代的名稱相同時,就會隱藏層級成員。
    NoName 當層級成員的名稱是空的時,就會隱藏。
    ParentName 當層級成員的名稱與其父系的名稱相同時,就會隱藏。

設定 MDX 相容性以判斷如何在用戶端應用程式中表示佔位元元

在階層層級上設定 HideMemberIf 之後,您也應該在從用戶端應用程式傳送的連接字串中設定 MDX 相容性 屬性。 MDX 相容性 設定會決定是否使用 HideMemberIf

MDX 相容性設定 描述 用法
1 顯示佔位元值。 這是 Excel、SSDT 和 SSMS 所使用的預設值。 它會指示伺服器在向下切入不完全階層中的空白層級時傳回佔位元值。 如果您按下佔位元值,您可以繼續前往子節點(分葉)節點。

Excel 擁有用來連線到 Analysis Services 的連接字串,而且一律會將每個新連線上的 MDX 相容性 設定為 1。 此行為會保留回溯相容性。
2 隱藏佔位元值(Null 值或父層級的重複專案),但顯示具有相關值的其他層級和節點。 MDX 相容性=2 通常視為不完全階層的慣用設定。 Reporting Services 報表和某些第三方用戶端應用程式可以保存此設定。

另請參閱

建立 User-Defined 階層
用戶階層
Parent-Child 維度
連接字串屬性 (Analysis Services)