큐브를 만들 때마다 직면하는 문제가 있으며 아직이 문제를 극복 할 방법을 찾지 못했습니다.
문제는 사용자가 차원에서 하드 코딩 할 필요없이 다양한 사물을 자동으로 정의 할 수있게하는 방법입니다. 예를 들어 내 문제를 설명하겠습니다.
Customers 라는 테이블이 있습니다 .
이것은 테이블의 데이터입니다.
피벗 스타일로 데이터를 표시하고 급여 와 연령 을 아래와 같이 정의 된 범위로 그룹화하고 싶습니다.
이 스크립트를 작성하고 범위를 정의했습니다.
SELECT [CustId]
,[CustName]
,[Age]
,[Salary]
,[SalaryRange] = case
when cast(salary as float) <= 500 then
'0 - 500'
when cast(salary as float) between 501 and 1000 then
'501 - 1000'
when cast(salary as float) between 1001 and 2000 then
'1001 - 2000'
when cast(salary as float) > 2000 then
'2001+'
end,
[AgeRange] = case
when cast(age as float) < 15 then
'below 15'
when cast(age as float) between 15 and 19 then
'15 - 19'
when cast(age as float) between 20 and 29 then
'20 - 29'
when cast(age as float) between 30 and 39 then
'30 - 39'
when cast(age as float) >= 40 then
'40+'
end
FROM [Customers]
GO
내 범위는 하드 코딩되어 정의되어 있습니다. 데이터를 Excel로 복사하고 피벗 테이블에서 볼 때 아래와 같이 나타납니다.
내 문제는 Customers 테이블을 사실 테이블로 변환하여 큐브를 만들고 SalaryDim & AgeDim 2 차원 테이블을 만들고 싶습니다 .
SalaryDim의 표 2 열 (갖는다 SalaryKey, SalaryRange ) 및 AgeDim의 테이블 (비슷 ageKey, AgeRange ). 내 고객 팩트 테이블에는 다음이 있습니다.
Customer
[CustId]
[CustName]
[AgeKey] --> foreign Key to AgeDim
[Salarykey] --> foreign Key to SalaryDim
여전히 이러한 차원 내에서 범위를 정의해야합니다. Excel 피벗을 큐브에 연결할 때마다 하드 코딩 된 정의 된 범위 만 볼 수 있습니다.
내 질문은 AgeDim 및 SalaryDim 과 같은 범위 차원을 만들지 않고 피벗 테이블에서 직접 범위를 동적으로 정의하는 방법 입니다. 치수에 정의 된 범위에만 고정하고 싶지 않습니다.
정의 된 범위는 '0-25', '26 -30 ', '31 -50'입니다. '0-20', '21 -31 ', '32 -42'등으로 변경하고 싶을 때마다 사용자가 매번 다른 범위를 요청합니다.
변경할 때마다 치수를 변경해야합니다. 이 과정을 어떻게 개선 할 수 있습니까?
큐브에 솔루션을 구현하면 큐브에 연결된 BI 클라이언트 도구가 범위를 정의 할 수 있지만 Excel 만 사용하는 좋은 방법이 있는지는 상관하지 않습니다.