판매량 팩트 테이블과 함께 제품 및 시간 차원이있는 상황이 있습니다. 시간이 지남에 따라 제품에 대한 다양한 세부 사항이 제품의 비즈니스 키를 제외하고 변경됩니다. 큐브에서의 제 평면보고에서 제품 차원의 다른 부분이 표시되는지 여부에 관계없이 '비즈니스 키'수준에서 일부 집계를 포함하고자합니다.MDX에서 집계를 수행하는 방법 SQL에서 'sum over partition'문과 비슷합니다.
SQL에서이 같은 사소한 것 :
select sum(volume) over (partition by productKey,year) as Total
을에 관계없이 내가 선택했던 어떤 다른 사람의 총 열은이 두 분야에 집계 될 것이다.
MDX에서는 동일한 결과를 얻을 수 있었지만 더 간단한 방법이 있어야합니다.
WITH MEMBER Measures.ProductKeyTotal AS
'SUM(([Product].[ProductKey],[Time].[Year]
,[Product].[Product Name].[Product Name].ALLMEMBERS
,[Volume Type].[Volume Type Id].[Volume Type Id].ALLMEMBERS)
,[Measures].[Volume])'
SELECT {[Measures].[Volume],[Measures].[ProductKeyTotal]} ON COLUMNS,
NONEMPTYCROSSJOIN ([Product].[ProductKey].[ProductKey].ALLMEMBERS
,[Time].[Time].[Year].ALLMEMBERS
,[Product].[Product Name].[Product Name].ALLMEMBERS
,[Volume Type].[Volume Type Id].[Volume Type Id].ALLMEMBERS) ON ROWS
FROM [My Cube]
WHERE ([Product].[Include In Report].&[True])
1) 나는 총이 정확하지 않은 계산 된 구성원에 원하지 않는 행에 대한 allmembers을 포함하지 않는 경우, 다른 모든 차원을 무시하도록 강제 할 수있는 바로 가기가 무엇인지 당신이 지정?
내가 묻는 이유 중 하나는 다른 계산 된 멤버를 추가해야한다는 것입니다. 일부는 매개 변수를 사용하고 위 예제의 메서드를 사용하면 동일한 항목을 복제해야 할 것입니다 여러 곳에서 코드가 중요해질 것입니다.
SQL에서는 "partition by"이 필요하지 않습니까? 간단한 "그룹화"가 효과적입니다. –
혼합 입도의 여러 집계가있는 경우에 파티션을 사용합니다. 그렇지 않으면 그룹화가 더 간단합니다. – Peter