다음을 통해 공유


불규칙 계층 구조

비정형 계층은 레벨 수가 고르지 않은 사용자 정의 계층입니다. 일반적인 예로는 고위 관리자가 직접 보고하는 부서 관리자와 비관리자가 있는 조직도 또는 워싱턴 D.C., 바티칸 시국, 뉴델리와 같이 상위 주나 도가 없는 도시로 구성된 국가-지역-도시의 지리적 계층 구조가 있습니다.

대부분의 차원 계층 구조에서, 각 수준에는 같은 수준의 다른 멤버들처럼 위 단계에 동일한 수의 멤버가 있습니다. 비정형 계층 구조는 하나 이상의 멤버의 논리적 부모가 멤버 바로 위의 수준에 있지 않다는 측면에서 다릅니다. 이 경우 계층 구조는 다른 드릴다운 경로에 대해 다른 수준으로 내려갑니다. 클라이언트 애플리케이션에서는 드릴다운 경로가 불필요하게 복잡할 수 있습니다.

클라이언트 애플리케이션은 비정형 계층 구조를 얼마나 잘 처리하는지에 따라 다릅니다. 모델에 비정형 계층이 있는 경우 예상되는 렌더링 동작을 가져오기 위해 약간의 추가 작업을 수행할 준비를 해야 합니다.

첫 번째 단계로, 클라이언트 애플리케이션이 드릴다운 경로를 처리하는 방법을 확인합니다. 예를 들어 Excel에서는 부모 이름을 누락된 값의 자리 표시자로 반복합니다. 이 동작을 직접 확인하려면 Adventure Works 다차원 모델에서 Sales Territory 차원을 사용하여 피벗 테이블을 빌드합니다. Sales Territory 속성인 그룹, 국가 및 지역이 포함된 피벗 테이블에서는, 지역 값이 누락된 국가에는 자리 표시자로서 위의 부모인 국가 이름이 반복되어 표시됩니다. 이 동작은 Excel 내에서 고정된 MDX 호환성=1 연결 문자열 속성에서 파생됩니다. 클라이언트가 원하는 드릴다운 동작을 자연스럽게 제공하지 않는 경우 모델의 속성을 설정하여 적어도 일부 동작을 변경할 수 있습니다.

이 항목에는 다음 섹션이 포함되어 있습니다.

비정형 계층 구조에서 드릴다운 탐색을 수정하는 방법

드릴다운 탐색이 예상 값을 반환하지 않거나 사용하기가 어색하다고 인식될 때 비정형 계층 구조의 존재는 문제가 됩니다. 비정형 계층 구조로 인한 탐색 문제를 해결하려면 다음 옵션을 고려합니다.

  • 일반 계층 구조를 사용하지만 각 수준에서 속성을 설정 HideMemberIf 하여 누락된 수준을 사용자에게 시각화할지 여부를 지정합니다. HideMemberIf을 설정할 때 기본 탐색 동작을 재정의하기 위해 연결 문자열에서 MDXCompatibility도 설정해야 합니다. 이러한 속성을 설정하기 위한 지침은 이 항목에 있습니다.

  • 수준 멤버를 명시적으로 관리하는 부모-자식 계층 구조를 만듭니다. 이 기술에 대한 일러스트레이션은 SSAS의 비정형 계층 구조(블로그 게시물)를 참조하세요. 온라인 설명서에 대한 자세한 내용은 Parent-Child 계층을 참고하십시오. 부모-자식 계층 구조를 만드는 단점은 차원당 하나만 가질 수 있으며 일반적으로 중간 멤버에 대한 집계를 계산할 때 성능 저하가 발생한다는 것입니다.

차원에 둘 이상의 비정형 계층 구조가 포함된 경우 첫 번째 방법인 HideMemberIf 설정을 사용해야 합니다. 비정형 계층 구조로 작업하는 실용적 경험을 가진 BI 개발자는 물리적 데이터 테이블의 추가 변경을 옹호하고 각 수준에 대해 별도의 테이블을 만드는 데 더 많은 작업을 진행합니다. 이 기술에 대한 자세한 내용은 Martin Mason의 SSAS Financial Cube-Part 1a-Ragged 계층 구조(블로그) 를 참조하세요.

HideMemberIf를 설정하여 일반 계층의 멤버 숨기기

비정형 차원의 테이블에서 논리적으로 누락된 멤버를 다른 방식으로 나타낼 수 있습니다. 테이블 셀은 null 또는 빈 문자열을 포함하거나 자리 표시자로 사용할 부모와 동일한 값을 포함할 수 있습니다. 자리 표시자의 표현은 HideMemberIf 속성에 의해 결정되는 자식 멤버의 자리 표시자 상태와 클라이언트 애플리케이션의 MDX Compatibility 연결 문자열 속성에 따라 결정됩니다.

비정형 계층의 표시를 지원하는 클라이언트 애플리케이션의 경우 이러한 속성을 사용하여 논리적으로 누락된 멤버를 숨길 수 있습니다.

  1. SSDT에서 차원을 두 번 클릭하여 차원 디자이너에서 엽니다. 첫 번째 탭인 차원 구조는 계층 창에 특성 계층을 표시합니다.

  2. 계층 내에서 멤버를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 아래에 설명된 값 중 하나로 설정합니다 HideMemberIf .

    HideMemberIf 설정 설명
    Never 수준 멤버는 숨겨지지 않습니다. 기본값입니다.
    OnlyChildWithNoName 수준 멤버는 부모의 유일한 자식이고 이름이 null이거나 빈 문자열인 경우 숨겨집니다.
    OnlyChildWithParentName 수준 멤버는 부모의 유일한 자식이고 해당 이름이 부모 이름과 같을 때 숨겨집니다.
    NoName 이름이 비어 있으면 수준 멤버가 숨겨집니다.
    ParentName 수준 멤버는 해당 이름이 부모의 이름과 동일할 때 숨겨집니다.

MDX 호환성을 설정하여 클라이언트 애플리케이션에서 자리 표시자가 표시되는 방식을 결정합니다.

계층 수준에서 HideMemberIf을(를) 설정한 후에는 클라이언트 애플리케이션에서 보낸 연결 문자열의 MDX Compatibility 속성도 설정해야 합니다. MDX Compatibility 설정은 HideMemberIf 사용 여부를 결정합니다.

MDX 호환성 설정 설명 사용법
1 자리 표시자 값을 표시합니다. Excel, SSDT 및 SSMS에서 사용하는 기본값입니다. 비정형 계층 구조에서 빈 수준을 드릴다운할 때 자리 표시자 값을 반환하도록 서버에 지시합니다. 자리 표시자 값을 클릭하면 자식(리프) 노드로 계속 이동할 수 있습니다.

Excel은 Analysis Services에 연결하는 데 사용되는 연결 문자열을 소유하며, 새 연결마다 항상 1로 설정 MDX Compatibility 됩니다. 이 동작은 이전 버전과의 호환성을 유지합니다.
2 자리 표시자 값(null 값 또는 부모 수준의 중복)을 숨기지만 관련 값이 있는 다른 수준 및 노드를 표시합니다. MDX Compatibility=2는 일반적으로 비정형 계층 구조 측면에서 기본 설정으로 간주됩니다. Reporting Services 보고서 및 일부 타사 클라이언트 애플리케이션은 이 설정을 유지할 수 있습니다.

또한 참조하십시오

User-Defined 계층 만들기
사용자 계층 구조
Parent-Child 계층 구조
연결 문자열 속성(Analysis Services)