0

조직에서 SQL Server (결국 SSAS의 큐브)에 데이터웨어 하우스를 구축해야 할 필요가있는 사실 테이블은 판매 목표/예산 데이터 용입니다.학부모의 측정 값이 어린이 측정 값의 합계보다 작은 희석 된 계층 구조가있는 판매 목표 (일명 예산) 사실

날짜까지, 나는이 문제의 반대편 만 처리했습니다. 즉, 자식 값의 합계가 부모 값의 합보다 작습니다.

여기에 질문은 부모의 가치의 n 배의 합인 자녀의 가치의 합계를 모델화하는 방법입니다.

다음 표는 내가이 문제를 설명 할 수있는 가장 좋은 방법입니다. 아래에 주어진

모든 직원은 판매 대상/예산 금액이 있습니다

EmployeeId | EmployeeBudgetAmount$ 
-----------+---------------------- 
Emp1  | 100 
Emp2  | 200 
Emp3  | 500 

직원 수준에서 위의 예산 값이 관행으로 분할 (이민 법적 관행에 대한 조직의 용어에 해당, 기업 등) :

EmployeeId | PracticeTypeId | PracticeId | EmployeePracticeBudgetAmount$ 
Emp1 | PracType1 | Prac1 | 20 
Emp1 | PracType1 | Prac2 | 80 
Emp1 | PracType2 | Prac10 | 40 
Emp1 | PracType2 | Prac20 | 60 
Emp1 | PracType3 | Prac100 | 30 
Emp1 | PracType3 | Prac200 | 70 

Emp2 | PracType1 | Prac1 | 160 
Emp2 | PracType1 | Prac2 | 40 
Emp2 | PracType2 | Prac10 | 80 
Emp2 | PracType2 | Prac20 | 120 
Emp2 | PracType3 | Prac100 | 140 
Emp2 | PracType3 | Prac200 | 60 

Emp3 | PracType1 | Prac1 | 0 
Emp3 | PracType1 | Prac2 | 500 
Emp3 | PracType2 | Prac10 | 100 
Emp3 | PracType2 | Prac20 | 400 
Emp3 | PracType3 | Prac100 | 200 
Emp3 | PracType3 | Prac200 | 300 

직원의 총 예산은 해당 직원의 모든 유형의 예산에서 충족됩니다.

Emp1's total budget = SUM(Emp1's practice budget) for PracType1 
Emp1's total budget = SUM(Emp1's practice budget) for PracType2 
Emp1's total budget = SUM(Emp1's practice budget) for PracType3 

... 등등.

사실 테이블에 연습 예산 테이블 (위의 두 번째 테이블)을 사용하는 경우 직원의 모든 EmployeePracticeBudgetAmount를 집계하면 3 (사용 가능한 연습 유형 수)에 직원의 예산을 곱한 예산 금액이 산출됩니다.

이것을 사실 테이블로 모델링하는 방법에 대한 지침이나 아이디어가 있습니까?

미리 감사드립니다.

참고 : 예산 수준을 요약해야하는 직원 수준보다 높은 회계 연도 및 회계 연도와 같은 다른 차원이 있습니다. 간결한 이유로 위의 질문에 제시하지 않았습니다.

+1

'EmployeeBudgetAmount $'값이 실제로 연습 유형 * 당 예산 금액 * 인 경우 필요한 위치에 있습니다. 그렇지 않으면 그렇지 않습니다.그런 다음 두 번째 표의 모든 레코드에 대해 예산 값을 분산시키는 방법을 변경하면됩니다. 당신이하는 일은 당신에게 달려 있습니다. 내가 놓친 게 있니? –

+0

@ R. 리차드, 귀하의 회신에 감사드립니다. EmployeeBudgetAmount $는 직원 당 예산 금액과 연습 유형별 예산 금액입니다. 그러나 내가 질문에 언급했듯이, EmployeePracticeBudgetAmount $를 사실 테이블로 사용하는 두 번째 테이블을 사용하면 직원 수준에서 SUM을 수행하면 직원 예산이 예산보다 더 많이 나타납니다. 예를 들어 Emp1의 두 번째 표에 따른 예산은 100이 아니라 300 일 것입니다 (100은 올바른 금액 임). 편집 : 또한, 첫 번째와 두 번째 테이블은 실제 OLTP 테이블, 아무것도 데이터웨어 하우스 자체와 관련이 없습니다. – dakaujunk

+1

'EmployeeBudgetAmount $ '는 직원 1 인당 예산 금액이고 또한 연습 유형별 예산 금액입니다. 어떻게 둘 다 될 수 있습니까? 바로 지금, 그것은 나중에입니다. 첫 번째 테이블에 나열한 것과 같은 번호를 얻으려면 두 번째 테이블에서'EmployeeId'와'PracticeTypeId'를 모두 사용하십시오. Emp1은 연습 유형 당 100 *을 갖습니다. –

답변

0

세 가지 연습 유형 각각에 대해 직원 예산을 세 번 올리면 직원별로 그룹화/합계 한 경우 합계가 3 배가됩니다.

두 번째 테이블과 같이 팩트 테이블을 만든 경우 예산은 연습 유형에 걸쳐 합계를 계산할 수 없다는 점에서 '반가 산적'이됩니다.

사용자를 교육하여 처리 할 수 ​​있습니다 (사용자가 쿼리/보고서를 작성할 때이 사실을 알 수 있음). SSAS의 경우 Enterprise Edition에는 세미 부가 기능을 정의 할 수있는 기능이 제공되므로 더 많은 작업 (및 인터넷 검색)으로 Standard Edition에서이 문제를 해결할 수 있습니다.

이 복잡성없이 요약 된 직원 예산을 확실히 갖고 싶다면 별도의 팩트 테이블을 가질 수 있지만 선택 사항으로 들릴 수 있습니다.

직원 예산에 대한 하나의 팩트 테이블, 실무 예산에 대한 하나의 실천표, 직원에 대한 하나의 실무 및 실무 유형에 대한 실사 (사례 유형 통합)가 될 것입니다.

관련 문제