2012-08-03 3 views
0

차원 ID 레코드를 열 (특성)으로 사용할 수 있습니까? 이 방법이 효과가 있는지, 아니면 최선의 방법을 위반하는지는 알 수 없습니다. 여기에 내가 왜 묻고 있는지, 내가 무엇을 찾고 있는지에 대한 자세한 설명이 있습니다. 저는 지난 Due Dimension이라는 6 개의 레코드 만있는 차원이 있습니다.차원 ID 레코드를 열 (특성)으로 사용할 수 있습니까?

PastDueBandDimID  PastDueMin  PastDueMax  PastDueDesc 
    _____________________________________________________________________ 
    1     0    0    Current 
    _____________________________________________________________________ 
    2     1    29    1-29 Days Past Due 

을 그리고 그것은 30~59일/60로 간다에 - 팔십구일/90~1백80일 : 그것은 다음과 같다. 이 패턴은 모두 잘 작동하지만이 데이터로 사용자 계층 구조를 만들고 싶습니다. 그래서 다른 방식으로 그룹화 할 수 있습니다. 그래서 내가 생각한 것은 DSV에서 추가 필드 인 1-29/30-59 ...를 만들고이 필드의 DimID를 참조하여 내 계층 구조를 만들 수있었습니다. 나는이 일을하는 좋은 방법이라고 생각하지 않지만, 다른 생각은 없습니다. 어떤 제안이라도 감사드립니다! 내 보고서를 0-59 일과 60-180 일로 그룹화 (일부는 전부는 아니지만)하고 싶습니다. 사용자 계층 구조를 사용하면이 작업을 수행 할 수 있습니다.

답변

2

이런 식으로 버킷을 만들 때 나는 거의 항상 "지난 기한"차원이 아닌 집계 된 사실에 물리적 버킷 열을 만듭니다.

매우 유연하기 때문에 이러한 차원을 구축하려는 유혹을 이해할 수 있지만 발견 할 때 자동화 된 도구 (예 : ssas) 사용이 더욱 어려워지고 지속적으로 사실을 업데이트하도록 강요합니다 표를 사용하여 새로운 '지난 기한'차원 값을 반영합니다.

대신, 사실에 우선 순위를두고 매일 (또는 DB가 충분히 강하면보기까지) 다시 집계하는 것이 어떻습니까? 예를 들어 송장을 사용 : 당신이 다음에 그룹에 원하는 인해 < 육십일 과거의 모든 송장, 당신은 단지 필터링 것이라고 말한다면

Invoice 
Invoice Due Date 
PastDueLTE29 (1 if <= 29, 0 otherwise) 
PastDue30to59 (1 if >= 30 and <= 59, 0 otherwise) 
PastDue60to89 (1 if >= 60 and <= 89, 0 otherwise) 
PastDue90to180 (1 if >= 90 and <= 179, 0 otherwise) 
PastDueGTE180 (1 if >= 180, 0 otherwise) 

경우 처음 두 기둥 중 하나 = 1

당신이 만약 정말로 계층 구조가 필요합니다. 테이블에 몇 개의 열을 추가 할 수는 없습니까?

은 정말 열의 이름에서 "Level"을 사용하여 좋아 ...하지만하지 않습니다

PastDueBandDimID 
PastDueLevel1Name ("Past Due" or "Current") 
PastDueLevel2Name ("1-60" or "61-180" or "180+") 
PastDueLevel3Name ("1-30", "31-60", "61-90", "90+" 
PastDueLevel3Min 
PastDueLevel3Max 
+0

감사합니다! 나는이 제안을 시도 할 것이다. – John