사용자 정의 계층은 차원의 멤버를 계층 구조로 구성하고 큐브에서 탐색 경로를 제공하기 위해 Microsoft SQL Server Analysis Services에서 사용되는 특성의 사용자 정의 계층 구조입니다. 예를 들어 다음 표에서는 시간 차원에 대한 차원 테이블을 정의합니다. 차원 테이블은 Year, Quarter 및 Month라는 세 가지 특성을 지원합니다.
| 연도 | 분기 | 월 |
|---|---|---|
| 1999 | 1분기 | 1월 |
| 1999 | 1분기 | 2월 |
| 1999 | 1분기 | 3월 |
| 1999 | 2분기 | 4월 |
| 1999 | 2분기 | 5월 |
| 1999 | 2분기 | 6월 |
| 1999 | 3분기 | 7월 |
| 1999 | 3분기 | 8월 |
| 1999 | 3분기 | 9월 |
| 1999 | 4분기 | 10월 |
| 1999 | 4분기 | 11월 |
| 1999 | 4분기 | 12월 |
Year, Quarter 및 Month 특성은 시간 차원에서 Calendar이라는 사용자 정의 계층 구조를 생성하는 데 사용됩니다. 다음 다이어그램에서는 일정 차원(일반 차원)의 수준과 멤버 간의 관계를 보여 줍니다.
비고
기본 2단계 특성 계층이 아닌 모든 계층을 사용자 정의 계층이라고 합니다. 특성 계층에 대한 자세한 내용은 특성 및 특성 계층을 참조하세요.
멤버 구조체
부모-자식 계층을 제외하고 계층 내 멤버의 위치는 계층 정의의 특성 순서에 따라 제어됩니다. 계층 정의의 각 특성은 계층 구조의 수준을 구성합니다. 수준 내 멤버의 위치는 수준을 만드는 데 사용되는 특성의 순서에 따라 결정됩니다. 사용자 정의 계층의 멤버 구조는 멤버가 서로 관련되는 방식에 따라 네 가지 기본 양식 중 하나를 사용할 수 있습니다.
균형 잡힌 계층 구조
균형 잡힌 계층 구조에서 계층 구조의 모든 분기는 동일한 수준으로 내림차순이며 각 멤버의 논리적 부모는 멤버 바로 위의 수준입니다. Adventure Works DW 다차원 2012 샘플 Analysis Services 데이터베이스에서 제품 차원의 제품 범주 계층 구조는 균형 잡힌 계층 구조의 좋은 예입니다. 제품 이름 수준의 각 멤버에는 하위 범주 수준의 부모 멤버가 있으며, 그러면 범주 수준에 부모 멤버가 있습니다. 또한 계층의 모든 분기에는 제품 이름 수준의 리프 멤버가 있습니다.
불균형 계층 구조
불균형 계층 구조에서 계층의 분기는 다른 수준으로 내림차순입니다. 부모-자식 계층은 불균형 계층입니다. 예를 들어 Adventure Works DW 다차원 2012 샘플 Analysis Services 데이터베이스의 조직 차원에는 각 직원에 대한 멤버가 포함됩니다. CEO는 계층 구조의 최고 구성원이며, 부서 관리자와 집행 비서는 즉시 CEO 아래에 있습니다. 부서 관리자는 부하 구성원을 가지고 있지만 집행 비서는하지 않습니다.
최종 사용자가 불균형 계층과 비정형 계층을 구분하는 것은 불가능할 수 있습니다. 그러나 Analysis Services에서 서로 다른 기술과 속성을 사용하여 이러한 두 가지 유형의 계층을 지원합니다. 자세한 내용은 비정형 계층 구조 및 Parent-Child 계층의 특성을 참조하세요.
불규칙 계층 구조
비정형 계층에서 하나 이상의 멤버의 논리적 부모 멤버가 멤버 바로 위의 수준에 있지 않습니다. 이로 인해 계층의 분기가 다른 수준으로 내려갈 수 있습니다. 예를 들어 대륙, CountryRegion 및 City 수준으로 정의된 지리 차원에서 해당 순서대로 유럽 멤버는 계층의 최상위 수준에 나타나고 멤버 프랑스는 중간 수준에 나타나고 멤버 파리는 아래쪽 수준에 나타납니다. 프랑스는 유럽보다 더 구체적이며 파리는 프랑스보다 더 구체적입니다. 이 일반 계층 구조에 대해 다음과 같은 변경 내용이 적용됩니다.
바티칸 시국 구성원이 CountryRegion 수준에 추가됩니다.
구성원은 도시 수준에 추가되고 CountryRegion 수준의 바티칸 시국 구성원과 연결됩니다.
CountryRegion과 City 수준 사이에 Province라는 수준이 추가됩니다.
강원도 수준은 CountryRegion 수준의 다른 구성원과 연결된 멤버로 채워지고, 도시 수준의 구성원은 해당 지역 수준의 해당 멤버와 연결됩니다. 그러나 CountryRegion 수준의 바티칸 시국 구성원은 지방 수준에서 연결된 구성원이 없으므로, 회원은 시 수준에서 직접 CountryRegion 수준의 바티칸 시국 회원과 연결되어야 합니다. 변경으로 인해 차원의 계층 구조는 이제 비정형입니다. 도시 바티칸 시국의 부모는 국가 / 지역 바티칸 시국이며, 도시 수준에서 바티칸 시국 회원 바로 위의 수준에 있지 않습니다. 자세한 내용은 비정형 계층을 참조하세요.
Parent-Child 계층
차원에 대한 부모-자식 계층은 멤버가 서로 어떻게 관련되는지를 결정하기 위해 부모 특성이라는 특수 특성을 사용하여 정의됩니다. 부모 특성은 차원 주 테이블 내에서 자체 참조 관계 또는 자체 조인을 설명합니다. 부모-자식 계층은 단일 부모 특성에서 생성됩니다. 계층 구조에 있는 수준은 부모 특성과 연결된 멤버 간의 부모-자식 관계에서 그려지므로 부모-자식 계층에는 한 수준만 할당됩니다. 부모-자식 계층 구조의 차원 스키마는 차원 주 테이블에 있는 자체 참조 관계에 따라 달라집니다. 예를 들어 다음 다이어그램에서는 Adventure Works DW 다차원 2012Analysis Services 샘플 데이터베이스의 DimOrganization 차원 주 테이블을 보여 줍니다.
이 차원 테이블에서 ParentOrganizationKey 열에는 OrganizationKey 기본 키 열과 외래 키 관계가 있습니다. 즉, 이 테이블의 각 레코드는 테이블의 다른 레코드와 부모-자식 관계를 통해 관련될 수 있습니다. 이러한 종류의 자체 조인은 일반적으로 부서 내 직원의 관리 구조와 같은 조직 엔터티 데이터를 나타내는 데 사용됩니다.
부모-자식 계층을 만들 때 두 특성이 나타내는 열의 데이터 형식이 같아야 합니다. 두 특성 모두 동일한 테이블에 있어야 합니다. 기본적으로 부모 키가 자체 멤버 키, null, 0(0) 또는 멤버 키에 대한 열에 없는 값과 같은 멤버는 최상위 수준(모두 제외)의 멤버로 간주됩니다.
부모-자식 계층의 깊이는 계층적 분기마다 다를 수 있습니다. 즉, 부모-자식 계층 구조는 불균형 계층으로 간주됩니다.
계층 구조의 수준 수가 최종 사용자가 볼 수 있는 수준 수를 결정하는 사용자 정의 계층과 달리 부모-자식 계층 구조는 특성 계층의 단일 수준으로 정의되며 이 단일 수준의 값은 사용자가 볼 수 있는 여러 수준을 생성합니다. 표시되는 수준 수는 멤버 키와 부모 키를 저장하는 차원 테이블 열의 내용에 따라 달라집니다. 차원 테이블의 데이터가 변경되면 수준 수가 변경됩니다. 자세한 내용은 Parent-Child 계층 구조 및 Parent-Child 계층의 특성을 참조하세요.