2014-01-26 1 views
3

두 개의 차원 DimFlag 및 DimPNL과 팩트 테이블 FactAmount가 있습니다. pnl이 stat 일 때 : sum (Actual x FlagId) pnl의 경우 기본적으로 플래그 Id를 필드에 곱합니다. 0 0 X = 0 ..Mdx - 플래그 - 실제

DimFlag

FlagId FlagLabel 
----------------- 
1  NotClosed 
0  IsClosed 

DimPNL

PNLId PNLName Is Stat 
1  a  1 
2  test  1 
3  test2 0 

FactAmount

id PNLId  FlagId Actual 
    1  1  1  100 
    2  2  1  10 
    3  3  0  120 

나는 다음과 같은 시도 MDX가 작동하지 않았습니까?

Scope (
     [Dim PNL].[PNL].members,[Measures].members  

); 


this = iif([Dim PNL].[PNL].CurrentMember.Properties("Is Stat") =1 
, 
aggregate([Dim PNL].[PNL].currentmember,[Measures].currentmember)* iif([Dim Flag].[Flag Label].[Flag Label].currentmember = 0, 0, 1), 
aggregate([Dim PNL].[PNL].currentmember,[Measures].currentmember) 
); 
+0

은 ftp 명령을 옵션으로 사용합니까? 아니면 적어도'wget'에서? 나는'curl'을 좋아하지만'ftp' 또는'wget'을 사용하면 더 쉬울 것이라고 생각합니다. – npocmaka

+0

당신이 원할 경우 프록시를 설정할 수 있습니다 : http://linuxers.org/tutorial/wget-proxy-how-run- wget-behind-proxy-server – npocmaka

+0

'Is Stat'가 0이면 결과는 어떨까요? 이 계산에서 얻은 측정 값의 이름은 어떻게 지정해야합니까? – FrankPl

답변

1

은 (단지 계산 또는 무엇이든 할 수있는 기본 집계를 실행 집계 기능을 가정) 당신이 집계하려는 알아낼 수 없습니다. 이것을 시도하십시오 :

with 

-- check if PNL flag has IS_Stat = 1 value 
-- actually it is better to add IS_Stat as attribute, but nvm 
member isPNL as 
(
    iif([Dim PNL].[PNL].CurrentMember.Properties("Is Stat")=1,1,0) 
) 

-- calculate FlagID * Actual. May require leaf level calculation, but 
-- I am not sure without checking your cube structure 
member flagActualPair as 
(
    [Measures].[Actual] * CINT([Dim Flag].[Flag Label].[Flag Label].currentmember.memberValue) 
) 

-- get sum of Actual * FlagID 
member totalPNL as 
(
    sum(EXISTING [Dim PNL].[PNL].members, [Measures].[flagActualPair]) 
) 

-- final query - filter PNL axis, filtering out PNL's with IS_Stat = 0 
select 
{ 
    [Measures].[totalPNL] 
} on 0, 
{ 
    FILTER([Dim PNL].[PNL].allmembers, [Measures].[isPNL] = 1) 
} on 1 
from *YourCube*