用戶階層
適用於: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
使用者定義的階層是使用者定義階層的屬性階層,這些屬性會用於Microsoft SQL Server SQL Server Analysis Services 中,將維度的成員組織成階層結構,並在 Cube 中提供導覽路徑。 例如,下表會定義時間維度的維度數據表。 維度數據表支援三個名為 Year、Quarter 和 Month 的屬性。
年 | 季度 | 月 |
---|---|---|
1999 | 第 1 季 | 1 月 |
1999 | 第 1 季 | 2 月 |
1999 | 第 1 季 | 三月 |
1999 | 第 2 季 | 四月 |
1999 | 第 2 季 | 五月 |
1999 | 第 2 季 | 六月 |
1999 | 第 3 季 | 七月 |
1999 | 第 3 季 | 八月 |
1999 | 第 3 季 | 九月 |
1999 | 第 4 季 | 10 月 |
1999 | 第 4 季 | 11 月 |
1999 | 第 4 季 | 12 月 |
Year、Quarter 和 Month 屬性可用來建構時間維度中名為 Calendar 的使用者定義階層。 下圖顯示 [行事曆] 維度層級和成員之間的關聯性(一般維度)。
注意
默認兩層屬性階層以外的任何階層稱為用戶定義的階層。 如需屬性階層的詳細資訊,請參閱 屬性和屬性階層。
成員結構
除了父子式階層之外,階層中成員的位置是由階層定義中屬性的順序所控制。 階層定義中的每個屬性都會構成階層中的層級。 成員在層級內的位置取決於用來建立層級的屬性順序。 用戶定義階層的成員結構可以採用四種基本形式之一,視成員彼此的關聯方式而定。
平衡階層
在平衡階層中,階層的所有分支都會遞減至相同的層級,而每個成員的邏輯父系會緊接在成員上方。 Adventure Works DW 多維度 2012 範例 SQL Server Analysis Services 資料庫中產品維度的產品類別階層是平衡階層的良好範例。 [產品名稱] 層級中的每個成員在 Subcategory 層級中都有父成員,而子類別層級中又有父成員。 此外,階層中的每個分支都有 [產品名稱] 層級中的分葉成員。
不平衡階層
在不平衡的階層中,階層的分支會遞減至不同的層級。 父子式階層是不平衡的階層。 例如,Adventure Works DW 多維度 2012 範例 SQL Server Analysis Services 資料庫中的組織維度包含每位員工的成員。 首席執行官是階層中的最高成員,而部門經理和執行董事緊接在首席執行官之下。 部門經理有下屬成員,但執行秘書沒有。
使用者可能無法區分不平衡和不完全的階層。 不過,您會在 SQL Server Analysis Services 中使用不同的技術和屬性來支援這兩種類型的階層。 如需詳細資訊,請參閱 不完全階層和 Parent-Child 階層中的屬性。
不完全的階層
在不完全的階層中,至少一個成員的邏輯父成員不在成員上方的層級中。 這可能會導致階層的分支降到不同的層級。 例如,在以[大陸]、[CountryRegion] 和 [城市] 層級定義的 Geography 維度中,依該順序,歐洲成員會出現在階層的最上層,成員法國會出現在中間層級,而巴黎成員則出現在最底層。 法國比歐洲更具體,巴黎比法國更具體。 在此一般階層中,會進行下列變更:
梵蒂岡市成員被添加到國家區域層級。
成員會新增至城市層級,並與 CountryRegion 層級的梵蒂岡城市成員相關聯。
名為省的層級會在 CountryRegion 和 City 層級之間新增。
省級會填入與 CountryRegion 層級其他成員相關聯的成員,而城市層級的成員則與省層級的對應成員相關聯。 不過,由於 CountryRegion 層級的梵蒂岡城市成員在省級中沒有相關聯的成員,因此成員必須直接從城市層級關聯到 CountryRegion 層級的梵蒂岡城市成員。 由於變更,維度的階層現在已不完全。 梵蒂岡城的父系是梵蒂岡城的國家/地區,該城市不在梵蒂岡城成員的層級上。 如需詳細資訊,請參閱 不完全階層。
Parent-Child 階層
維度的父子式階層是使用稱為父屬性的特殊屬性來定義,以判斷成員彼此的關聯性。 父屬性描述維度主數據表內或
在此維度數據表中,ParentOrganizationKey 數據行與 OrganizationKey 主鍵數據行具有外鍵關聯性。 換句話說,此數據表中的每個記錄都可以透過父子式關聯性與數據表中的另一筆記錄相關。 這種自我聯結通常用來代表組織實體數據,例如部門中員工的管理結構。
當您建立父子式階層時,這兩個屬性所代表的數據行必須具有相同的數據類型。 這兩個屬性也必須位於相同的數據表中。 根據預設,父索引鍵等於其本身成員索引鍵、Null、0(零)或成員索引鍵數據行中不存在的值,假設其為最上層的成員(不包括 (All) 層級)。
父子式階層的深度在其階層式分支之間可能會有所不同。 換句話說,父子式階層會被視為不平衡的階層。
與使用者定義的階層不同,階層中的層級數目決定終端使用者可以看到的層級數目,父子式階層是以屬性階層的單一層級定義,而這個單一層級中的值會產生使用者看到的多個層級。 顯示的層級數目取決於儲存成員索引鍵和父索引鍵的維度數據表數據行內容。 維度數據表中的數據變更時,層級數目可能會變更。 如需詳細資訊,請參閱 Parent-Child 維度和 Parent-Child 階層中的屬性。