MicroStrategy ONE
모든 룩업 테이블 요소 유지
모든 룩업 테이블 요소 유지 VLDB 속성은 결과 집합에 해당 팩트가 없는 경우에도 룩업 테이블에 존재하는 모든 속성 요소를 표시하는 데 사용됩니다. 예를 들어 리포트에 Store(매장) 및 Sum(Sales)(합계(매출))가 포함되어 있고 매장에 매출이 전혀 없을 수도 있습니다. 그러나 매출이 없는 매장이라고 하더라도 최종 리포트에 모든 매장 이름을 표시해야 합니다. 이렇게 하려면 매출 팩트 테이블에 있는 매장을 사용해서는 안 됩니다. 대신에 룩업 테이블의 모든 매장이 최종 리포트에 포함되도록 해야 합니다. SQL 엔진은 룩업 테이블에서 팩트 테이블로의 왼쪽 외부 조인을 수행해야 합니다.
템플릿에 여러 속성이 있을 수 있습니다. 모든 속성 요소를 유지하려면 분석 엔진은 팩트 테이블에 대한 왼쪽 외부 조인을 수행하기 전에 관련된 속성의 룩업 테이블 간에 카테시안 조인을 수행해야 합니다.
룩업 및 최종 패스 결과 테이블의 공통 요소를 유지합니다(기본값).
분석 엔진은 룩업 테이블에 대한 일반 조인(동등 조인)을 수행합니다.
팩트 테이블 키에 기반을 둔 최종 패스 결과 테이블에 조인된 룩업 테이블 요소를 유지합니다(Preserve Lookup Table Elements Joined to Final Pass Result Table Based on Fact Table Keys).
때때로 팩트 테이블 레벨은 리포트 또는 템플릿 레벨과 같지 않습니다. 예를 들어, 리포트에 매장(Store), 월(Month) 및 합계(매출)(Sum(Sales)) 메트릭이 포함되지만 팩트 테이블은 매장(Store), 일(Day) 및 항목(Item) 레벨일 수 있습니다. 모든 매장 및 월 요소를 유지하는 두 가지 방법이 있습니다.
- 먼저 왼쪽 외부 조인을 수행하여 매장(Store), 일(Day) 및 항목(Item) 레벨에서 모든 속성 요소를 유지한 다음 매장(Store) 및 월(Month) 레벨로 데이터를 집계합니다.
- 먼저 데이터 집계를 수행한 다음 왼쪽 외부 조인을 수행하며 모든 속성 요소를 가져옵니다.
이 옵션은 첫 번째 접근법입니다. 이전 예제에서 SQL 패스는 2개입니다.
Pass 1: LOOKUP_DAY와 교차 조인한 LOOKUP_STORE이 LOOKUP_ITEM èTT1과 교차 조인
Pass 2: Fact_Table의 (store, day, item)에서 TT1 왼쪽 외부 조인
이 접근법의 장점은 동일한 패스(패스 2)에서 왼쪽 외부 조인을 수행하고 집계를 한다는 것입니다. 단점은 룩업 테이블을 사용하는 카테시안 조인이 훨씬 더 낮은 레벨(패스 1)에서 수행되므로 카테시안 조인된 테이블(TT1)의 결과가 매우 방대할 수 있다는 점입니다.
필터 없이 템플릿 속성에 기반한 최종 패스 결과 테이블에 조인된 룩업 테이블 요소를 유지합니다(Preserve Lookup Table Elements Joined to Final Pass Result Table Based on Template Attributes Without Filter).
이 옵션은 위에서 설명한 두 번째 접근법에 해당합니다. 여전히 동일한 예제를 사용하여 SQL 패스가 3개입니다.
- Pass 1(패스 1): Store 및 Month에서 Fact_Table을 TT1에 집계. 이 설정을 해제한 경우 일반 리포트의 최종 패스입니다.
- Pass 2: LOOKUP_STORE 교차 조인 LOOKUP_MONTH > TT2
- Pass 3: TT1의 (store, month)에서 TT2 왼쪽 외부 조인
이 접근법은 이전 옵션보다 패스가 하나 더 필요하지만 교차 조인 테이블(TT2)이 일반적으로 더 작습니다.
필터가 있는 템플릿 속성에 기반을 둔 최종 패스 결과 테이블에 조인된 룩업 테이블 요소를 유지합니다(Preserve Lookup Table Elements Joined to Final Pass Result Table Based on Template Attributes with Filter).
이 옵션은 Option 3(옵션 3)와 비슷합니다. 유일한 차이는 리포트 필터가 최종 패스(패스 3)에서 적용된다는 것입니다. 예를 들어, 리포트에는 Year=2002 필터를 사용한 Store, Month, and Sum(Sales)가 포함됩니다. 매출 여부에 관계없이 2002년 매월 모든 매장을 표시하려고 합니다. 그러나 다른 연도의 달은 표시하지 않고 2002년의 12개월만 표시하려고 합니다. 옵션 4는 이 문제를 해결합니다.
그만큼 조회 및 최종 통과 결과 테이블의 공통 요소를 유지합니다. 옵션은 단순히 사실 테이블과 조회 테이블 간의 직접 조인을 생성합니다. 결과와 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
"Preserve lookup table elements joined to final pass result table based on fact keys(팩트 테이블 키에 기반을 둔 최종 패스 결과 테이블에 조인된 룩업 테이블 요소를 유지합니다)" 옵션은 모든 룩업 테이블 키 열의 카테시안 조인인 임시 테이블을 만듭니다. 그런 다음 팩트 테이블은 임시 테이블에 외부 조인됩니다. 이것은 모든 룩업 테이블 요소를 유지합니다. 결과와 SQL은 아래와 같습니다.
매장 | 매출액(달러) |
동부 |
5000 |
중부 |
8000 |
남부 |
12000 |
북부 |
|
select distinct a11.Year Year
into #ZZOL00
from Fact a11
select pa1.Year Year,
a11.Store_id Store_id
into #ZZOL01
from #ZZOL00 pa1
cross join Store a11
pa2.Store_id Store_id를 선택하고,
max(a12.Store) Store,
sum(a11.DollarSls) WJXBFS1
from #ZZOL01 pa2
left outer join Fact a11
on (pa2.Store_id = a11.Store_id and
pa2.Year = a11.Year)
join Store a12
on (pa2.Store_id = a12.Store_id)
pa2.Store_id로 그룹화
drop table #ZZOL00
drop table #ZZOL01
"Preserve lookup table elements joined to final pass result table based on template attributes without filter(필터 없이 템플릿 속성에 기반한 최종 패스 결과 테이블에 조인된 룩업 테이블 요소를 유지합니다)" 옵션은 룩업 테이블 요소를 유지하기 위해 SQL의 최종 패스에 왼쪽 외부 조인하고 템플릿에 있는 속성에 대해서만 조인합니다. 이 예제와 다음 예제의 경우 "Store is not Central(매장이 Central이 아님)" 필터가 추가됩니다. 결과와 SQL은 다음과 같습니다.
매장 | 매출액(달러) |
동부 |
5000 |
중부 |
|
남부 |
12000 |
북부 |
|
select a11.Store_id Store_id,
sum(a11.DollarSls) WJXBFS1
into #ZZT5X00003UOL000
from Fact a11
where a11.Store_id not in (2)
group by a11.Store_id
select a11.Store_id Store_id,
a11.Store Store,
pa1.WJXBFS1 WJXBFS1
from Store a11
left outer join #ZZT5X00003UOL000 pa1
(a11.Store_id = pa1.Store_id)
drop table #ZZT5X00003UOL000
"Preserve lookup table elements joined to final pass result table based on template attributes with filter(필터가 있는 템플릿 속성에 기반을 둔 최종 패스 결과 테이블에 조인된 룩업 테이블 요소를 유지합니다)" 옵션은 최신 옵션이며 위와 동일하지만 최종 패스에서 필터를 가져옵니다. 결과와 SQL은 다음과 같습니다.
매장 | 매출액(달러) |
동부 |
5000 |
남부 |
12000 |
북부 |
|
select a11.Store_id Store_id,
sum(a11.DollarSls) WJXBFS1
into #ZZT5X00003XOL000
from Fact a11
where a11.Store_id not in (2)
group by a11.Store_id
select a11.Store_id Store_id,
a11.Store Store,
pa1.WJXBFS1 WJXBFS1
from Store a11
left outer join #ZZT5X00003XOL000 pa1
(a11.Store_id = pa1.Store_id)
where a11.Store_id not in (2)
drop table #ZZT5X00003XOL000