MicroStrategy ONE
모든 최종 패스 결과 요소 유지
다음 모든 최종 패스 결과 요소 유지 VLDB 속성 설정은 최종 결과뿐 아니라 룩업 및 관계 테이블을 외부 조인하는 방법을 결정합니다.
- 기본값 Preserve common elements of final pass result table and lookup/relationship table(최종 패스 결과 테이블 및 룩업 테이블의 공통 요소를 유지합니다) 옵션을 선택하면, SQL 엔진은 동등 조인을 생성합니다. 따라서 두 테이블에 공통된 요소만이 표시됩니다.
- Preserve all final result pass elements(모든 최종 결과 패스 요소를 유지합니다) 옵션을 선택하면, SQL 엔진은 외부 조인을 생성하고 리포트에는 최종 결과 집합에 있는 요소 전체가 포함됩니다. 이 설정이 켜지면 팩트 테이블에서 룩업 테이블로뿐 아니라 모든 관계 테이블로든 모든 조인에서 외부 조인을 생성합니다. 이는 룩업 테이블로 사용되는 테이블과 관계 테이블로 사용되는 테이블을 구별하기가 어렵고, 흔히 한 테이블에서 두 역할을 맡기 때문입니다. 예를 들어, LOOKUP_DAY는 일(Day) 속성에는 룩업 테이블로 사용되고, 일(Day) 및 월(Month)에는 관계 테이블로 사용됩니다.
룩업 테이블이 올바르게 유지 관리되고 팩트 테이블의 모든 요소가 해당 룩업 테이블에 항목을 갖고 있는 표준 데이터 웨어하우스에서는 이 설정을 사용하면 안 됩니다. 팩트 테이블의 특정 속성에 해당 룩업 테이블보다 많은(고유한) 속성 요소가 포함된 경우에만 이 설정을 사용해야 합니다. 예를 들어 위의 예에서 팩트 테이블에는 각기 다른 매장 5개에 대한 매출 포함되어 있지만 매장 테이블에는 매장 4개만이 포함됩니다. 룩업 테이블에는 정의에 따라 모든 속성 요소가 포함되어야 하므로 표준 데이터 웨어하우스에서는 이 상황이 발생해서는 안 됩니다. 그러나 팩트 테이블이 룩업 테이블보다 더 자주 업데이트되는 경우 이런 상황이 발생할 수 있습니다.
- Preserve all elements of final pass result table with respect to lookup table but not relationship table(관계 테이블 말고 룩업 테이블에 대해서는 최종 패스 결과 테이블의 모든 항목 보존합니다) 옵션을 선택하면 SQL 엔진은 최종 패스를 제외한 모든 패스에서 내부 조인을 생성하고, 마지막 패스에서 외부 조인을 생성합니다.
- Do not listen to per report level setting, preserve elements of final pass according to the setting at attribute level(리포트 레벨 설정을 무시하고, 속성 레벨의 설정에 따라서 최종 패스의 요소를 유지합니다)를 선택하는 경우 이 선택 사항이 속성 레벨에서 선택되면 을 유지하는 것으로 처리되며 이 VLDB 속성의 설정은 속성 레벨에서 사용됩니다.
다른 조인 유형이 필요한 몇 가지 속성만 갖고 있는 경우 이 설정이 유용합니다. 예를 들어, 리포트의 속성 중에서 하나만 최종 패스 테이블의 요소를 유지해야 할 경우 VLDB 속성을 해당 속성에 대한 Preserve all final pass result elements(모든 최종 패스 결과 요소 유지합니다) 설정으로 설정할 수 있습니다. 그런 다음 리포트를 VLDB 속성에 대한 리포트 레벨 설정을 Do not listen(무시함) 설정으로 설정할 수 있습니다. 리포트가 실행되면 다르게 설정된 속성만 SQL에서 외부 조인을 발생시킵니다. 다른 모든 속성 룩업 테이블은 동등 조인을 사용하여 조인되므로 SQL 성능이 향상됩니다.
최종 패스 결과 테이블 및 룩업/관계 테이블의 공통 요소를 유지합니다.
리포트에는 템플릿에 Store(매장) 및 Dollar Sales(매출액(달러))가 있습니다.
"Preserve common elements of final pass result table and lookup table(최종 패스 결과 테이블 및 룩업 테이블의 공통 요소를 유지합니다)" 옵션은 아래의 SQL을 사용하여 다음 결과를 반환합니다.
매장 | 매출액(달러) |
동부 |
5000 |
중부 |
8000 |
남부 |
12000 |
select a11.Store_id Store_id,
max(a12.Store) Store,
sum(a11.DollarSls) WJXBFS1
from Fact a11
join Store a12
(a11.Store_id = a12.Store_id)
group by a11.Store_id
모든 최종 결과 패스 요소를 유지합니다.
리포트에는 템플릿에 Store(매장) 및 Dollar Sales(매출액(달러))가 있습니다.
"Preserve all final result pass elements(모든 최종 결과 패스 요소를 유지합니다)" 옵션은 아래의 SQL을 사용하여 다음 결과를 반환합니다. Store_IDs 4 및 5에 대한 데이터가 이제 표시됩니다.
매장 | 매출액(달러) |
동부 |
5000 |
중부 |
8000 |
남부 |
12000 |
|
3000 |
|
1500 |
select a11.Store_id Store_id,
max(a12.Store) Store,
sum(a11.DollarSls) WJXBFS1
from Fact a11
left outer join Store a12
(a11.Store_id = a12.Store_id)
group by a11.Store_id
조회 테이블과 관련하여 최종 통과 결과 테이블의 모든 요소를 유지하지만 관계 테이블에는 유지하지 않습니다.
리포트에는 템플릿에 국가(Country), 메트릭 1(Metric 1), 메트릭 2(Metric 2)가 있습니다. 각 메트릭에는 다음 팩트 테이블이 있습니다.
CALLCENTER_ID | 팩트 1 |
1 |
1000 |
2 |
2000 |
1 |
1000 |
2 |
2000 |
3 |
1000 |
4 |
1000 |
EMPLOYEE_ID | 팩트 2 |
1 |
5000 |
2 |
6000 |
1 |
5000 |
2 |
6000 |
3 |
5000 |
4 |
5000 |
5 |
1000 |
SQL 엔진은 패스 3개를 수행합니다. 첫 번째 패스에서 SQL 엔진은 메트릭 1을 계산합니다. SQL 엔진은 위의 "Fact Table (Metric 1)" 테이블과 아래의 콜 센터 룩업 테이블 "LU_CALL_CTR"을 내부 조인합니다.
CALLCENTER_ID | COUNTRY_ID |
1 |
1 |
2 |
1 |
3 |
2 |
다음 SQL을 사용하여 메트릭 1 임시 테이블을 만들면서 국가별로 그룹화합니다.
COUNTRY_ID | 메트릭 1 |
1 |
6000 |
2 |
1000 |
create table ZZSP00 nologging as
select a12.COUNTRY_ID COUNTRY_ID,
sum((a11.QTY_SOLD * a11.DISCOUNT))
WJXBFS1
from ORDER_DETAIL a11,
LU_CALL_CTR a12
where a11.CALL_CTR_ID = a12.CALL_CTR_ID
group by a12.COUNTRY_ID
두 번째 패스에서는 메트릭 2가 계산됩니다. SQL 엔진은 위의 "Fact Table (Metric 2)" 테이블과 아래의 직원 룩업 테이블 "LU_EMPLOYEE"를 내부 조인합니다.
EMPLOYEE_ID | COUNTRY_ID |
1 |
1 |
2 |
2 |
3 |
2 |
다음 SQL을 사용하여 메트릭 2 임시 테이블을 만들면서 국가별로 그룹화합니다.
COUNTRY_ID | 메트릭 2 |
1 |
10000 |
2 |
17000 |
create table ZZSP01 nologging as
select a12.COUNTRY_ID COUNTRY_ID,
sum(a11.FREIGHT) WJXBFS1
from ORDER_FACT a11,
LU_EMPLOYEE a12
where a11.EMP_ID = a12.EMP_ID
a12.COUNTRY_ID별로 그룹화
세 번째 단계에서 SQL 엔진은 다음 국가 찾아보기 테이블 인 "LU_COUNTRY"를 사용합니다.
COUNTRY_ID | COUNTRY_DESC |
1 |
미국 |
3 |
유럽 |
SQL 엔진은 위의 METRIC1_TEMPTABLE과 LU_COUNTRY 테이블을 왼쪽 외부 조인합니다. 그런 다음 SQL 엔진은 위의 METRIC2_TEMPTABLE과 LU_COUNTRY 테이블을 왼쪽 외부 조인합니다. 마지막으로, SQL 엔진은 세 번째 패스의 결과를 내부 조인하여 최종 결과를 생성합니다,
"Preserve all elements of final pass result table with respect to lookup table but not to relationship table(관계 테이블 말고 룩업 테이블에 대해서는 마지막 단계 결과 테이블의 모든 항목 보존하기)" 옵션은 아래의 SQL을 사용하여 다음 결과를 반환합니다.
COUNTRY_ID | COUNTRY_DESC | 메트릭 1 | 메트릭 2 |
1 |
미국 |
6000 |
10000 |
2 |
|
1000 |
17000 |
pa1.COUNTRY_ID COUNTRY_ID를 선택하세요.
a11.COUNTRY_NAME COUNTRY_NAME,
pa1.WJXBFS1 WJXBFS1,
pa2.WJXBFS1 WJXBFS2
from ZZSP00 pa1,
ZZSP01 pa2,
LU_COUNTRY a11
where pa1.COUNTRY_ID = pa2.COUNTRY_ID and
pa1.COUNTRY_ID = a11.COUNTRY_ID (+)