2014-08-29 3 views
5

나는 다음과 같은 크기 (한정되지 않음)이있는 원장 코드 블록의 상단에 icCube에서 모델을 구축 최적화하는 방법 :MDX - 비어 있지 않은 큰 crossjoin - 성능

  • 시간을
  • 엔티티
  • 비용 센터
  • 계정
  • 간 자
  • 프로젝트
  • 당신은 X 축에 이상의 3 차원 바닥 수준으로 붕괴가있을 때
  • 활동
  • 금액 (이 값입니다) 도구 계획에로드 된이 모델

는 성능에 문제가있는 것입니다.

내가 icCube이 더 잘 처리 할 수 ​​있는지 확인하려고했지만, 3 개 차원에 문 1700 초 동안 나를 데려 :

select [Dec] on 0 
, non empty { Descendants([Account].[Account].[Total],,leaves) } 
    * { Descendants([Activity].[Activity].[Total],,leaves) } 
    * { Descendants([CostCenter].[CostCenter].[Total],,leaves) } on 1 
from finance 

행에 여러 차원을하는 이유는 사용자가보고 싶은 것입니다 가능하면 코드 블럭의 세부 사항을, 가능한 한 완전한 코드 블럭을 사용하십시오.

다른 도구는 OLAP 데이터베이스가 기본이 아니기 때문에 이런 종류의 작업을 매우 쉽게 처리 할 수 ​​있지만 계층 구조를 사용하여 데이터 셀에서 직접 쿼리합니다. Excel에서 데이터 추출을 쿼리 할 때 동일한 성능을 얻을 수 있습니다 (데이터 행이 많지 않음). 데이터에

정보 :

  • 크기는 매우 거대하다 : 400 개 계정, 6000+ 활동, 50 개 단체, 500 CostCenters을
  • 치수 활동 및 프로젝트는 매우 평평하다 (거의 구조)
  • 50,000 개의 금액 만 있으므로 데이터가 매우 희박합니다.

이 문제를 해결하는 방법에 대한 의견이나 제안이 있으십니까?

답변

4

는 MDX에서 고전적인 문제이다 MDX 반 패턴을 생성하고 숫자 1

당신이 400x60000x500 = 12,000,000,000 (12X10^9) 튜플을 생성합니다 계산하고있는 crossjoin로 넣고 우리가 요구하고 가치 그들 각각을 평가하십시오. 그것은 초당 많은 평가를합니다.

드릴 스루를 수행하는 '이상한'방법처럼 보입니다. drillthrough에 대한 것이지만이 문제를 MDX에서 해결해 봅시다.

이 솔루션은 가능한 한 빨리 nonempty을 수행하여 생성되는 튜플 수를 줄이려고합니다.그래서 :

select 
[Dec] on 0, 
nonempty( 
    nonempty( 
     Descendants([Account].[Account].[Total],,leaves) 
    * nonempty(Descendants([Activity].[Activity].[Total],,leaves) , [DEC]) 
    , [DEC]) 
    * { Descendants([CostCenter].[CostCenter].[Total],,leaves) } 
, [DEC]) 
on 1 
from [finance] 

가 icCube에서 당신이 구문을 단순화하기 위해이 작업을 수행하는 Function을 만들 것입니다 : 약간 덜 비어 있지 않은으로 첫 번째 버전을 사용

noempty(noempty(A) x noempty(B)) x noempty(C) 
    or 
noempty(A) x noempty(noempty(B) x noempty(C)) 

Function megaCrossjoin1(A,B,C,M) as nonempty(nonempty(A,M) * nonempty(B,M), M) * nonempty(C,M) 

및 그것을 사용하십시오

megaCrossjoin1( 
    Descendants([Account].[Account].[Total],,leaves) , 
    Descendants([Activity].[Activity].[Total],,leaves) , 
    Descendants([CostCenter].[CostCenter].[Total],,leaves) , 
    [Dec]) 

도움이 되길 바랍니다.

+0

제 경우에는이 기술을 사용하면 불가능한 크로스 조인을 관리 할 수있게되었습니다. –

관련 문제