사실 테이블에서 고유 한 사실 수를 계산하는 계산 된 계수를 어떻게 만들 수 있는지 알아 내려고합니다. 사실 테이블은 기본적으로 역사적인 관점에서 이벤트를 저장합니다. 하지만 중복 이벤트를 필터링하는 방법이 필요합니다.
sales를 예제로 사용합니다 (OLAP 관련 모든 자료는 예제에서 항상 sales를 사용하므로) :
팩트 테이블은 판매 이벤트를 저장합니다. 판매가 처음 만들어지면 팩트 테이블의 열인 고유 한 영업 참조가 생깁니다. 그러나 고유 판매는 (항목 추가 또는 반환) 수정하거나 완전히 취소 할 수 있습니다. 팩트 테이블은 이러한 변경 사항을 다른 행으로 판매에 저장합니다.
SSAS를 사용하여 계산 계수를 만들면 모든 판매 이벤트 수를 얻게됩니다. 즉, 고유 한 판매가 모든 변경 사항에 대해 여러 번 계산됩니다 (일부 보고서에서는 바람직 함). 그러나 나는 또한 유일한 판매 참고 계산에 근거를두기보다는 사건보다는 오히려 유일한 판매의 조사를 일으키는 측정을 원한다. 사용자가 날짜별로 필터링하면 해당 날짜에 여전히 존재하는 고유 한 매출을 볼 수 있습니다 (해당 날짜까지 판매가 취소 된 경우 계산에 포함되지 않아야 함).
계산 된 계수 특정 셀에서만 집계
MDX/SSAS에서 어떻게합니까? 그것은 시간 차원을 기반으로 판매에 대한 최신 변경 사항을 찾는 쿼리의 하위 집합에서 카운트 쿼리 작업이 필요한 것 같습니다. SQL에서 그것은 무언가 같이 될 것이다 :
SELECT COUNT(*) FROM SalesFacts FACT1 WHERE Event <> 'Cancelled' AND
Timestamp = (SELECT MAX(Timestamp) FROM SalesFact FACT2 WHERE FACT1.SalesRef=FACT2.SalesRef)
가 가능 또는 성능이 좋은 이벤트가 MDX에 하위 쿼리를 가지고?
BTW, 즉 SQL에서 카운트를 수행하는 성능이 좋은 방법이 아니다 : 그는 약 (약간 털이) 솔루션을 말한다 크리스 웹이의 블로그에 최근 게시물이있다. 이벤트 ID의 뚜렷한 카운트 (특히, 인덱스되는 경우)가 훨씬 더 좋습니다. 또는 'Row_number over ...'유형 접근. 위의 내용은 상당한 양의 데이터로 인해 사망 할 것입니다. – piers7