Time 차원 수정
특성의 복합 키를 정의하여 SELECT DISTINCT 처리 쿼리에서 반환하는 멤버를 제어할 수 있습니다. 복합 키를 사용하면 복합 키 멤버의 순서에 따라 특성 멤버의 정렬 순서가 결정됩니다. 이 항목의 작업에서는 사용자 정의 계층 이름을 변경하고 Date, Month, Calendar Quarter 및 Calendar Semester 특성에 대해 표시되는 멤버 이름을 변경한 다음 EnglishMonthName, CalendarQuarter 및 CalendarSemester 특성에 대한 복합 키를 정의하고 복합 키 멤버 순서를 수정하여 차원 멤버의 정렬 순서를 제어합니다.
사용자 정의 계층 수정
사용자 정의 계층을 수정하려면
Business Intelligence Development Studio에서 Time 차원에 대한 차원 디자이너로 전환한 다음 차원 구조 탭을 클릭합니다.
계층 및 수준 창에서 CalendarYear - CalendarSemester - CalendarQuarter - EnglishMonthName - FullDateAlternateKey 계층을 클릭한 다음 속성 창에서 Name 속성을 Calendar Time으로 변경합니다.
이제 이 사용자 정의 계층의 이름은 Calendar Time입니다.
Calendar Time 사용자 정의 계층에서 English Month Name 수준을 Calendar Month로 변경하고 Full Date Alternate Key 수준을 Date로 변경합니다.
Adventure Works DW 데이터 원본 뷰에 대한 데이터 원본 뷰 디자이너로 전환하고 테이블 창에서 **Time (dbo.DimTime)**을 마우스 오른쪽 단추로 클릭한 다음 새 명명된 계산을 클릭합니다.
명명된 계산 만들기 대화 상자에서 열 이름 상자에 SimpleDate를 입력하고 식 상자에 다음 SQL 스크립트를 입력합니다.
DATENAME(mm, FullDateAlternateKey) + ' ' + DATENAME(dd, FullDateAlternateKey) + ', ' + DATENAME(yy, FullDateAlternateKey)
이 SQL 스크립트는 FullDateAlternateKey 열에서 연도, 월 및 요일 값을 추출합니다. Time 차원에 있는 Calendar Time 계층의 Date 수준을 수정하여 DimTime 테이블의 FullDateAlternateKey 열에 저장된 원래 값 대신 이 새로운 열의 값을 표시합니다.
확인을 클릭한 다음 Time 차원의 차원 디자이너로 전환합니다.
Calendar Time 계층의 Date를 클릭한 다음 속성 창에서 Date 수준의 속성을 검토합니다.
계층의 Date 수준은 FullDateAlternateKey 특성을 기반으로 합니다. 다음 단계에서는 이 수준이 기반으로 하는 특성을 TimeKey 특성으로 변경한 다음 해당 멤버 이름이 방금 정의된 SimpleDate 열의 값을 기반으로 하도록 TimeKey 특성의 속성을 수정합니다. FullDateAlternateKey를 Date 수준의 기반이 되는 특성으로 유지하고 해당 멤버 이름이 SimpleDate 열을 기반으로 하도록 특성을 변경할 수도 있습니다. 그러나 첫 번째 방법이 더 효율적입니다. TimeKey 특성과 FullDateAlternateKey 특성이 둘 다 필요한 것은 아니므로 FullDateAlternateKey 특성은 삭제합니다.
Calendar Time 사용자 정의 계층에서 Date 수준의 SourceAttribute 속성 값을 TimeKey로 변경한 다음 특성 창에서 FullDateAlternateKey 특성을 삭제합니다.
특성 창에서 TimeKey를 선택하고 속성 창에서 NameColumn 속성 컬렉션을 확장한 다음 Source 속성 컬렉션을 확장합니다. ColumnID 속성 값을 SimpleDate로 변경합니다.
TimeKey 특성의 OrderBy 속성이 키 값을 기준으로 특성 계층의 멤버가 정렬되도록 지정합니다.
BI Development Studio의 빌드 메뉴에서 Analysis Services Tutorial 배포를 클릭합니다. 배포가 성공적으로 완료되면 Time 차원에 대한 차원 디자이너에서 브라우저 탭을 클릭한 후 도구 모음에서 다시 연결을 클릭합니다.
Calendar Time 계층의 수준을 확장하여 Date 수준의 멤버를 검토합니다.
Date 수준의 멤버가 이전에 비해 사용자에게 친숙하게 바뀌었습니다. 그러나 반기, 분기 및 연도 멤버는 부모 연도를 나타내지 않습니다.
다음 이미지에서는 Date 수준의 멤버를 보여 줍니다.
계층 목록에서 EnglishMonthName을 선택한 다음 All 멤버를 확장합니다.
Time 차원에서 각 월은 매년 한 번씩이 아니라 한 번만 나타납니다. 이 항목의 다음 작업에서는 각 연도의 월마다 고유한 이름을 생성합니다.
계층 목록에서 CalendarQuarter를 선택한 다음 All 멤버를 확장합니다.
Time 차원에서 각 분기는 분기마다 한 번씩이 아니라 한 번만 나타납니다. 또한 월은 사전순으로 정렬됩니다. 이 항목의 다음 작업에서는 각 연도의 분기마다 고유한 이름을 생성합니다. 4단원에서는 월을 시간순으로 정렬하도록 구성합니다.
고유한 차원 멤버 이름 지정
고유한 차원 멤버 이름을 지정하려면
Adventure Works DW 데이터 원본 뷰에 대한 데이터 원본 뷰 디자이너로 전환하고 테이블 창에서 **Time (dbo.DimTime)**을 마우스 오른쪽 단추로 클릭한 다음 새 명명된 계산을 클릭합니다.
명명된 계산 만들기 대화 상자에서 열 이름 상자에 MonthName을 입력하고 식 상자에 다음 SQL 스크립트를 입력합니다.
EnglishMonthName+' '+ CONVERT(CHAR (4), CalendarYear)
이 SQL 스크립트는 DimTime 테이블에 있는 월 및 각 월의 연도를 새 열에 연결합니다.
확인을 클릭합니다.
테이블 창에서 **Time (dbo.DimTime)**을 마우스 오른쪽 단추로 클릭한 다음 새 명명된 계산을 클릭합니다.
명명된 계산 만들기 대화 상자에서 열 이름 상자에 CalendarQuarterDesc를 입력하고 식 상자에 다음 SQL 스크립트를 입력합니다.
'Q' + CONVERT(CHAR (1), CalendarQuarter) +' '+ 'CY ' + CONVERT(CHAR (4), CalendarYear)
이 SQL 스크립트는 DimTime 테이블에 있는 분기와 각 분기의 연도를 새 열에 연결합니다.
확인을 클릭합니다.
테이블 창에서 Time을 마우스 오른쪽 단추로 클릭한 다음 새 명명된 계산을 클릭합니다.
명명된 계산 만들기 대화 상자에서 열 이름 상자에 CalendarSemesterDesc를 입력하고 식 상자에 다음 SQL 스크립트를 입력합니다.
CASE WHEN CalendarSemester = 1 THEN 'H1' + ' ' + 'CY' + ' ' + CONVERT(CHAR(4), CalendarYear) ELSE 'H2' + ' ' + 'CY' + ' ' + CONVERT(CHAR(4), CalendarYear) END
이 SQL 스크립트는 DimTime 테이블에 있는 반기와 각 반기의 연도를 새 열에 연결합니다.
확인을 클릭하고 Time 차원에 대한 차원 디자이너로 전환한 다음 차원 구조 탭을 클릭합니다.
Time 차원의 EnglishMonthName, CalendarQuarter 및 CalendarSemester 특성을 수정하여 새 열의 값을 멤버 값으로 사용합니다.
특성 창에서 EnglishMonthName을 선택합니다. 속성 창에서 NameColumn 속성을 확장하고 Source 속성을 확장한 다음 ColumnID 속성 값을 MonthName으로 변경합니다.
같은 방법으로 Calendar Quarter 특성과 Calendar Semester 특성의 ColumnID 속성을 다음으로 변경합니다.
- Calendar Quarter — ColumnID 속성을 CalendarQuarterDesc로 변경합니다.
- Calendar Semester — ColumnID 속성을 CalendarSemesterDesc로 변경합니다.
BI Development Studio의 빌드 메뉴에서 Analysis Services Tutorial 배포를 클릭합니다. 배포가 성공적으로 완료되면 Time 차원에 대한 차원 디자이너에서 브라우저 탭을 클릭합니다.
브라우저 탭의 도구 모음에서 다시 연결을 클릭한 후 Calendar Quarter 특성 계층에서 CalendarQuarter 특성 계층의 멤버를 검토합니다.
CalendarQuarter 특성 계층의 멤버 이름은 사용자에게 친숙하게 바뀌었지만 특성 계층에는 각 연도와 분기 조합에 대한 멤버가 아니라 4개의 멤버만 있습니다. EnglishMonthName 또는 CalendarSemester 특성 계층을 검토해도 비슷한 동작을 볼 수 있습니다. 이 항목의 다음 작업에서는 이러한 특성의 복합 키를 지정하여 이 동작을 수정합니다.
복합 키 값 지정
복합 키 값을 지정하려면
Time 차원에 대한 차원 디자이너의 차원 구조 탭을 선택하고 EnglishMonthName 특성을 선택한 다음 속성 창의 KeyColumns 속성 셀에서 줄임표 단추(…)를 클릭하여 특성 값을 수정합니다.
DataItem 컬렉션 편집기가 열리고 이 특성의 멤버 키 열이 표시됩니다. Analysis Services에서 차원을 처리할 때 SELECT DISTINCT 쿼리를 실행하여 차원의 멤버를 확인합니다. DataItem 컬렉션 편집기에서 특성의 단일 열 키가 아니라 복합 키를 지정하여 추가 차원 멤버를 반환할 수 있습니다.
추가를 클릭하여 차원 특성의 두 번째 멤버 키를 정의합니다.
멤버 목록에 새 멤버 키가 나타납니다. 이 새로운 키 멤버의 속성을 정의해야 합니다.
새 바인딩(WChar) 속성의 Source 속성 셀에서 줄임표 단추(...)를 클릭하여 해당 값을 변경합니다.
개체 바인딩 대화 상자가 나타납니다. 이 대화 상자에서 지정된 테이블에 있는 기존 열을 지정하거나 하향식 디자인 방법을 사용하여 관계형 스키마를 생성하는 경우에는 만들려는 열 유형을 지정합니다.
바인딩 유형 목록에서 열 바인딩을 선택합니다.
원본 테이블 목록에서 Time이 선택되었는지 확인합니다.
원본 열 목록에서 CalendarYear를 선택합니다.
다음 이미지에서는 개체 바인딩 대화 상자를 보여 줍니다.
확인을 클릭하여 개체 바인딩 대화 상자를 닫은 다음 다시 확인을 클릭하여 DataItem 컬렉션 편집기를 닫습니다.
이제 KeyColumns 속성의 값이 **(Collection)**으로 설정되었습니다.
CalendarQuarter 특성을 선택하고 속성 창의 KeyColumns 속성 셀에서 줄임표 단추(...)를 클릭하여 특성 값을 수정합니다.
DataItem 컬렉션 편집기가 나타납니다.
추가를 클릭하여 KeyColumns 속성의 두 번째 멤버를 정의합니다.
새 바인딩(WChar) 속성의 Source 속성 셀에서 줄임표 단추(...)를 클릭하여 해당 값을 변경합니다.
개체 바인딩 대화 상자가 나타납니다.
바인딩 유형 목록에서 열 바인딩을 선택합니다.
원본 테이블 목록에서 Time이 선택되었는지 확인합니다.
원본 열 목록에서 CalendarYear를 선택합니다.
확인을 차례로 두 번 클릭합니다.
CalendarSemester 특성을 선택하고 속성 창의 KeyColumns 속성 셀에서 줄임표 단추(...)를 클릭하여 특성 값을 수정합니다.
DataItem 컬렉션 편집기 대화 상자가 나타납니다.
추가를 클릭하여 KeyColumns 속성의 두 번째 멤버를 정의합니다.
새 바인딩(WChar) 속성의 Source 속성 셀에서 줄임표 단추(...)를 클릭하여 해당 값을 변경합니다.
개체 바인딩 대화 상자가 나타납니다.
바인딩 유형 목록에서 열 바인딩을 선택합니다.
원본 테이블 목록에서 Time이 선택되었는지 확인합니다.
원본 열 목록에서 CalendarYear를 선택합니다.
확인을 차례로 두 번 클릭합니다.
BI Development Studio의 빌드 메뉴에서 Analysis Services Tutorial 배포를 클릭합니다. 배포가 성공적으로 완료되면 Time 차원에 대한 차원 디자이너에서 브라우저 탭을 클릭합니다.
브라우저 탭의 도구 모음에서 다시 연결을 클릭한 후 Calendar Quarter 특성 계층에서 CalendarQuarter 특성 계층의 멤버를 검토합니다.
이제 연도별 각 분기에 대한 CalendarQuarter 특성 계층에 멤버가 있지만 멤버가 시간순으로 정렬되지 않고 분기순으로 정렬된 다음 연도순으로 정렬됩니다. 이 항목의 다음 작업에서는 이 동작을 수정하여 이 특성 계층의 멤버를 연도순으로 정렬한 다음 분기순으로 정렬합니다.
다음 이미지에서는 CalendarQuarter 특성 계층의 현재 구조를 보여 줍니다.
EnglishMonthName 및 CalendarSemester 특성 계층의 멤버를 검토합니다.
이 계층의 멤버도 시간순으로 정렬되지 않고 각각 월이나 반기순으로 정렬된 다음 연도순으로 정렬됩니다. 이 항목의 다음 작업에서는 이 동작을 수정하여 이 정렬 순서를 변경합니다.
복합 키 멤버 순서를 수정하여 정렬 순서 변경
복합 키 멤버 순서를 수정하려면
Time 차원에 대한 차원 디자이너의 차원 구조 탭을 선택한 다음 특성 창에서 CalendarSemester를 선택합니다.
속성 창에서 OrderBy 속성 값을 검토합니다.
CalendarSemester 특성 계층의 멤버는 키 값을 기준으로 정렬됩니다. 복합 키를 사용하면 멤버 키가 먼저 첫 번째 멤버 키의 값을 기준으로 정렬된 다음 두 번째 멤버 키 값을 기준으로 정렬됩니다. 즉 CalendarSemester 특성 계층의 멤버는 먼저 반기순으로 정렬된 다음 연도순으로 정렬됩니다.
속성 창에서 줄임표 단추(...)를 클릭하여 KeyColumns 속성 값을 변경합니다.
DataItem 컬렉션 편집기가 열립니다.
DataItem 컬렉션 편집기의 멤버 테이블에서 **DimTime.CalendarSemester (UnsignedTinyInt)**가 선택되었는지 확인한 다음 아래쪽 화살표를 클릭하여 이 복합 키 멤버의 순서를 반대로 바꿉니다. 확인을 클릭합니다.
이제 특성 계층의 멤버가 연도순으로 정렬된 다음 반기순으로 정렬됩니다.
특성 창에서 CalendarQuarter를 선택하고 속성 창에서 KeyColumns 속성의 줄임표 단추(...)를 클릭합니다.
DataItem 컬렉션 편집기의 멤버 테이블에서 **DimTime.CalendarQuarter (UnsignedTinyInt)**가 선택되었는지 확인한 다음 아래쪽 화살표를 클릭하여 이 복합 키 멤버의 순서를 반대로 바꿉니다. 확인을 클릭합니다.
이제 특성 계층의 멤버가 연도순으로 정렬된 다음 분기순으로 정렬됩니다.
특성 창에서 EnglishMonthName을 선택하고 속성 창에서 KeyColumns 속성의 줄임표 단추(...)를 클릭합니다.
DataItem 컬렉션 편집기의 멤버 테이블에서 **DimTime.EnglishMonthName (WChar)**이 선택되었는지 확인한 다음 아래쪽 화살표를 클릭하여 이 복합 키 멤버의 순서를 반대로 바꿉니다. 확인을 클릭합니다.
이제 특성 계층의 멤버가 연도순으로 정렬된 다음 월순으로 정렬됩니다.
BI Development Studio의 빌드 메뉴에서 Analysis Services Tutorial 배포를 클릭합니다. 배포가 성공적으로 완료되면 Time 차원에 대한 차원 디자이너에서 브라우저 탭을 클릭합니다.
브라우저 탭의 도구 모음에서 다시 연결을 클릭한 다음 CalendarQuarter 및 CalendarSemester 특성 계층의 멤버를 검토합니다.
이 계층의 멤버는 이제 시간순으로 정렬되고 연도순으로 정렬된 다음 각각 분기순이나 반기순으로 정렬됩니다.
EnglishMonthName 특성 계층의 멤버를 검토합니다.
이제 계층의 멤버가 연도순으로 정렬된 다음 월 이름의 사전순으로 정렬됩니다. 이는 기본 관계형 데이터베이스의 nvarchar 데이터 형식에 기초하여 데이터 원본 뷰의 EnglishCalendarMonth 열에 대한 데이터 형식이 문자열 열이기 때문입니다. 그러나 각 연도 안에 월이 시간순으로 정렬되는 것이 더 효과적입니다. 4단원에서 이 정렬 순서를 변경합니다.
다음 이미지에서는 EnglishMonthName 특성 계층을 보여 줍니다.
BI Development Studio의 파일 메뉴에서 모두 저장을 클릭하여 Analysis Services Tutorial 프로젝트의 이 지점에서 변경한 내용을 저장합니다. 그러면 필요할 경우 자습서를 여기서 중지하고 나중에 계속할 수 있습니다.
데이터 원본 뷰에서 명명된 계산을 만든 다음 이 명명된 계산을 특성 멤버 이름으로 사용하여 사용자에게 친숙한 Time 차원 특성 계층의 멤버를 만들었습니다. 또한 복합 키를 정의하고 복합 키 멤버의 순서를 알맞게 지정하여 차원 멤버 정렬 순서를 사용자에게 친숙하게 제어했습니다.