2012-04-20 1 views
0

저는 데이터웨어 하우스 디자인의 초보자입니다. 나는 어떤 이론을 가지고 있지만 최근에 OLAP 큐브의 디자인에 실질적인 문제를 만났습니다. 스타 스키마를 사용합니다.합계 및 고유 카운트 측정 (별표 스키마 디자인 koan)


차원 지명 :
COUNTRY_NAME
province_name
district_name


치수 장치를 dimension_id

내가 2 개 차원 테이블 1 개 사실 테이블이 있다고 가정하자 :
01 235, 는
device_category
device_subcategory을 dimension_id


사실 테이블 :

hazard_id (측정 항목)
area_m2 (측정 항목)


을 device_dimension_id gazetteer_id

하나의 위치 (지명 사전)와 ocuppies X 평방 미터에 "비즈니스 객체"(실제로 지뢰밭 임)가 여러 장치를 가질 수 있습니다.
그래서이있는 장치 카테고리를 알기 위해,이 같은 위험에서 각 장치마다 사실을 만들어 :

+--------------+---------------------+-----------------------+-----------+ 
| gazetteer_id | device_dimension_id | hazard_id    | area_m2 | 
+--------------+---------------------+-----------------------+-----------+ 
| 123   | 321     | 0a0a-502c-11aa1331e98 | 6000  | 
+--------------+---------------------+-----------------------+-----------+ 
| 123   | 654     | 0a0a-502c-11aa1331e98 | 6000  | 
+--------------+---------------------+-----------------------+-----------+ 
| 123   | 987     | 0a0a-502c-11aa1331e98 | 6000  | 
+--------------+---------------------+-----------------------+-----------+ 

내가 hazard_id의 고유 한 카운트 같은 측정 "위험의 수를"정의.
또한 "total area occupied"측정 값을 area_m2의 합계로 정의했습니다.
이제 지명 사전 및 장치를 사용하고 주어진 차원 구성원에 얼마나 많은 위험이 있는지 알 수 있습니다.
그러나 문제는 area_m2입니다 : 합계로 정의되기 때문에 실제 영역보다 n 배 높은 값을 제공합니다. 여기서 n은 위험 객체의 장치 수입니다. 예를 들어, 위의 데이터는 18000m2를 제공합니다.
이 문제를 어떻게 해결할 수 있습니까?

저는 Pentaho 스택을 사용하고 있습니다. 사전에

감사

+0

hazard-id가 지뢰밭이고 gazetter 및 지뢰 크기 별 분석기를보고있는 경우 위험 요소를 포함 할 수있는 위험 치수를 만들 수 있습니다. 또는 DeviceDimension 테이블에서 Null 장치 항목을 만들고 Null 장치 항목 만 area_m2 집합을 가져 오면 실제 장치는 area_m2 = 0을 얻습니다. – Jamie

답변

0

위험-ID가 지뢰밭 인 경우

, 당신은 광산별로 지역에서 찾고 (gazetter) & 크기의-minefields- [코멘트에서 이동] 지명 사전에 따르면, 아마도 위험의 영역을 차지하는 위험 차원을 만들 수 있습니다. 또는 DeviceDimension 테이블에서 Null 장치 항목을 만들고 Null 장치 항목 만 area_m2 집합을 가져 오면 실제 장치는 area_m2 = 0을 얻습니다.

장치 321이 포함 된 지뢰밭의 총 면적과 같은 쿼리에 응답해야하는 경우 두 번째 방법은 이러한 질문에 쉽게 답할 수 없으므로 위험 요소를 만드는 것이 더 나은 방법 일 수 있습니다.

위험 당 각 유형의 num 디바이스를 가질 수있는 디바이스 수 사실을 추가하는 것도 고려해 볼 수 있습니다.

+0

답변을 주신 Jamie에게 감사드립니다. – elkarel

+0

답변을 주신 Jamie에게 감사드립니다. 옵션 (1) 위험 수준 만들기 : 계층 구조가없는 Area (수만)에 대한 단일 항목이 많기 때문에 사용하기가 어려울 것으로 생각됩니다. null 디바이스를 가진 옵션 (2)은 좋은 생각입니다.하지만 당신의 예가 맞습니다. 필자는 적어도 pentaho에서 그것을 구현하는 방법을 모르겠습니다. 팩트 테이블에있는 (3) addicional number-of-devices-per-field-count 열 : 나는 그것을 생각하고있었습니다. 그것은 전체 영역을 다시 나눌 수 있지만 여러 장치가 요청한 쿼리로는 작동하지 않습니다 ... – elkarel