보조 특성을 기준으로 특성 멤버 정렬
3단원에서는 이름이나 키 값을 기준으로 특성 멤버를 정렬하는 방법과 복합 멤버 키를 사용하여 특성 멤버와 정렬 순서를 조정하는 방법에 대해 배웠습니다. 자세한 내용은 Time 차원 수정을 참조하십시오. 그러나 특성의 이름이나 키를 기준으로 원하는 정렬 순서를 지정할 수 없는 경우와 같이 원하는 정렬 순서를 지정하려면 보조 특성을 기준으로 특성 멤버 순서를 지정해야 할 수도 있습니다. 보조 특성 이름이나 키를 기준으로 특성을 정렬하려면 특성과 연결된 보조 특성을 사용해야 합니다.
특성 관계는 특성 간의 관계나 종속성을 정의합니다. 하나의 관계형 테이블을 기준으로 하는 차원에서는 일반적으로 모든 특성이 키 특성을 통해 서로 연결됩니다. 이는 차원에 대한 모든 특성이 차원의 키 특성으로 각 관련 측정값 그룹의 팩트 테이블에 있는 팩트에 연결된 멤버에 대한 정보를 제공하기 때문입니다. 여러 테이블을 기준으로 하는 차원에서는 일반적으로 특성이 테이블 간의 조인 키를 기준으로 연결됩니다.
그러나 계층의 특정 수준에 있는 멤버에 대한 추가 정보를 보려는 경우 차원 디자이너를 사용하면 특성 간의 추가 관계를 정의하거나 기본 관계를 변경하여 성능을 개선할 수 있습니다. 특성 관계를 만들 경우 참조된 특성에는 연결된 특성의 멤버에 대한 값이 하나 이하여야 한다는 주요 제약 조건이 있습니다. 두 특성의 관계를 정의할 경우 나중에 멤버 간의 관계가 변경될지 여부에 따라 관계를 고정된 관계나 유동적 관계로 정의할 수 있습니다. 예를 들어 직원은 다른 판매 지역으로 이동할 수 있지만 도시는 다른 주로 이동할 수 없습니다. 관계를 고정된 관계로 정의하면 차원이 증분 처리될 때마다 특성 집계가 다시 계산되지는 않습니다. 그러나 멤버 간의 관계가 변경되면 차원이 전체적으로 처리되어야 합니다. 자세한 내용은 특성 관계, 특성 관계 정의 및 구성, 특성 관계 속성 구성 및 사용자 정의 계층의 특성 간 특성 관계 지정을 참조하십시오.
이 항목의 작업에서는 기본 차원 테이블의 기존 열을 기반으로 Time 차원에 새 특성을 정의하고 이 새로운 특성을 사용하여 사전순이 아니라 시간순으로 월 멤버를 정렬합니다. 또한 Commute Distance 특성 멤버를 정렬하는 데 사용할 명명된 계산을 기반으로 Customer 차원에 새 특성을 정의합니다. 다음 항목의 작업에서는 특성 관계를 사용하여 쿼리 성능을 높이는 방법에 대해 설명합니다.
Time 차원의 특성 관계 및 정렬 순서 정의
Time 차원의 특성 관계와 정렬 순서를 정의하려면
Time 차원에 대한 차원 디자이너를 열고 속성 창에서 Month Name 특성의 OrderBy 속성을 검토합니다.
Month Name 특성 멤버는 키 값을 기준으로 정렬됩니다.
브라우저 탭으로 전환하여 계층 목록에서 Calendar Time이 선택되어 있는지 확인한 다음 사용자 정의 계층의 수준을 확장하여 월 정렬 순서를 검색합니다.
특성 계층의 멤버는 해당 멤버 키의 ASCII 값인 월 및 연도를 기준으로 정렬됩니다. 이 경우 특성 이름이나 키를 기준으로 정렬하면 월이 시간순으로 정렬되지 않습니다. 이 문제를 해결하려면 새 특성인 MonthNumberOfYear 특성을 기준으로 특성 계층의 멤버를 정렬합니다. 편의를 위해 DimTime 차원 테이블에 있는 열을 기준으로 이 특성을 만듭니다.
Time 차원의 차원 구조 탭으로 전환하여 데이터 원본 뷰 창의 MonthNumberOfYear를 마우스 오른쪽 단추로 클릭한 다음 열의 새 특성을 클릭합니다.
특성 창에서 Month Number Of Year를 선택한 다음 속성 창에서 AttributeHierarchyEnabled 속성을 False로, AttributeHierarchyOptimizedState 속성을 NotOptimized로, AttributeHierarchyOrdered 속성을 False로 설정합니다.
위와 같이 설정하면 사용자가 볼 수 없도록 특성이 숨겨지고 처리 시간이 절약됩니다. 또한 다른 특성의 멤버 정렬에만 이 새로운 특성이 사용되므로 위와 같이 설정해야 합니다.
[!참고] 속성 창에서 속성을 사전순으로 정렬하면 이러한 3개의 속성이 서로 인접하여 정렬되므로 이 작업이 단순해집니다.
- 특성 창에서 Date를 확장합니다.
Time 차원의 모든 특성은 Date 특성과 직접 연결되며 이 특성은 차원 멤버를 관련된 측정값 그룹의 팩트에 연결하는 멤버 키입니다. - Month Name을 확장합니다.
Month Name 특성과 Month Number Of Year 특성 사이에는 관계가 정의되어 있지 않습니다. - Month Number Of Year 특성을 Month Name 특성 아래의 <새 특성 관계> 태그로 끌어 옵니다.
추가 관계를 정의할 수도 있지만 기존 관계를 이동하면 처리 성능이 향상되고 중복성이 감소합니다. 이제 Month Number Of Year 특성과 Month Name 특성 사이에 관계가 정의되었습니다. 속성 창에서 Month Number Of Year 특성 관계의 RelationshipType 속성 기본값이 Flexible로 설정되어 있는지 확인합니다. - 속성 창에서 RelationshipType 속성 값을 Rigid로 변경합니다.
Month Name 특성과 Month Number Of Year 특성의 멤버 간 관계는 시간이 지나도 변경되지 않습니다. 결과적으로 Analysis Services는 증분 처리 도중에 이 관계에 대한 집계를 삭제하지 않습니다. 관계가 변경되면 증분 처리 도중에 처리 오류가 발생하며 차원의 전체 처리를 수행해야 합니다. 이제 Month Name의 멤버에 대한 정렬 순서를 설정할 수 있습니다.
다음 이미지에서는 Month Name 특성의 Month Number Of Year 특성 관계에 대해 RelationshipType 속성이 Rigid로 설정된 상태를 보여 줍니다.
- 특성 창에서 Month Name을 선택한 다음 속성 창에서 OrderBy 속성 값을 AttributeKey로, OrderByAttribute 속성 값을 Month Number Of Year로 변경합니다.
다음 이미지에서는 속성 창에서 이러한 속성을 변경하는 방법을 보여 줍니다.
- 빌드 메뉴에서 Analysis Services Tutorial 배포를 클릭합니다.
- 배포가 성공적으로 완료되면 Time 차원에 대한 브라우저 탭으로 전환하고 다시 연결을 클릭한 다음 Calendar Time 및 Fiscal Time 사용자 계층을 찾아 월이 시간순으로 정렬되는지 확인합니다.
다음 이미지와 같이 이제 월이 시간순으로 정렬됩니다.
Customer 차원의 특성 관계 및 정렬 순서 정의
Customer 차원의 특성 관계와 정렬 순서를 정의하려면
Customer 차원에 대한 차원 디자이너에서 차원 구조 탭으로 전환합니다.
특성 창에서 Commute Distance 특성을 선택한 다음 속성 창에서 OrderBy 속성을 검토합니다.
브라우저 탭으로 전환한 다음 Commute Distance 특성 계층의 멤버를 찾아봅니다.
이 특성 계층의 멤버는 멤버 키의 ASCII 값을 기준으로 정렬됩니다. 이 경우 특성 이름이나 키를 기준으로 정렬하면 통근 거리가 짧은 순서대로 정렬되지 않습니다. 이 작업에서는 열의 개별 값에 따라 알맞은 정렬 번호를 매기는 CommuteDistanceSort 명명된 계산을 기준으로 특성 계층의 멤버를 정렬합니다. 시간을 절약하기 위해 이 명명된 계산은 이미 Adventure Works DW 데이터 원본 뷰의 Customer 테이블에 추가되어 있습니다. 이 데이터 원본 뷰로 전환하여 이 명명된 계산에 사용되는 SQL 스크립트를 볼 수 있습니다. 자세한 내용은 데이터 원본 뷰에서 명명된 계산 정의(Analysis Services)를 참조하십시오.
다음 이미지에서는 멤버 키의 ASCII 값을 기준으로 정렬된 Commute Distance 특성 계층 멤버를 보여 줍니다.
Customer 차원에 대한 차원 디자이너에서 차원 구조 탭으로 전환하여 데이터 원본 뷰 창의 Customer 테이블에 있는 CommuteDistanceSort를 마우스 오른쪽 단추로 클릭한 다음 열의 새 특성을 클릭합니다.
특성 창에서 Commute Distance Sort를 선택한 다음 속성 창에서 이 특성의 AttributeHierarchyEnabled 속성을 False로, AttributeHierarchyOptimizedState 속성을 NotOptimized로, AttributeHierarchyOrdered 속성을 False로 설정합니다.
위와 같이 설정하면 사용자가 볼 수 없도록 특성이 숨겨지고 처리 리소스가 절약되며 다른 특성의 멤버 정렬에만 새로운 특성이 사용되므로 위와 같이 설정해야 합니다.
특성 창에서 Full Name을 확장합니다.
Analysis Services Tutorial 데이터 원본 뷰의 Customer 테이블에서 파생된 Customer 차원의 모든 특성이 이 특성을 통해 연결됩니다.
Geography를 확장합니다.
Analysis Services Tutorial 데이터 원본 뷰의 Geography 테이블에서 파생된 Customer 차원의 모든 특성이 Geography 특성을 통해 연결됩니다.
Geography를 선택한 다음 속성 창에서 AttributeHierarchyVisible 속성을 False로, AttributeHierarchyOptimized 속성을 NotOptimized로, AttributeHierarchyOrdered 속성을 False로 설정합니다.
이 특성은 찾아보는 데 사용되지 않으므로 위와 같이 설정하면 사용자가 볼 수 없도록 특성이 숨겨지고 처리 시간이 절약됩니다. 멤버 속성이 있을 경우 특성 계층을 설정해야 합니다.
특성 창에서 Commute Distance를 확장합니다.
이 특성과 Commute Distance Sort 특성 사이에는 관계가 정의되어 있지 않습니다.
Commute Distance Sort 특성을 Commute Distance 특성 아래의 <새 특성 관계> 태그로 끌어 옵니다.
이제 Commute Distance 특성과 Commute Distance Sort 특성 간의 관계가 정의되었습니다. 속성 창에서 Commute Distance 특성의 Commute Distance Sort 멤버에 대한 RelationshipType 속성 기본값이 Flexible로 설정되어 있는지 확인합니다.
속성 창에서 RelationshipType 속성 값을 Rigid로 변경합니다.
Commute Distance 특성과 Commute Distance Sort 특성의 멤버 간 관계는 시간이 지나도 변경되지 않습니다. 이제 Commute Distance 특성의 정렬 순서를 설정할 수 있습니다.
특성 창에서 Commute Distance를 선택한 다음 속성 창에서 OrderBy 속성 값을 AttributeKey로, OrderByAttribute 속성 값을 Commute Distance Sort로 변경합니다.
빌드 메뉴에서 Analysis Services Tutorial 배포를 클릭합니다.
배포가 성공적으로 완료되면 Customer 차원에 대한 차원 디자이너의 브라우저 탭으로 전환하고 다시 연결을 클릭한 다음 Commute Distance 특성 계층을 찾아봅니다.
다음 이미지와 같이 이제 특성 계층 멤버가 증가하는 거리를 기준으로 논리적 순서에 따라 정렬됩니다.