2017-03-07 3 views
0

이 공식을 Pentaho Mondrian Cube에서 다시 만들려고합니다.IsLeaf를 mondrian mdx formula에 어떻게 사용합니까?

IIF (ISLEAF ([시간]. [월] .CurrentMember)), 측정 값] .m1,0)

이 수식 이미 SSAS 큐브 사용되고있다. 비슷한 공식을 Pentaho Mondrian Cube에서 재 작성해야합니다.

IsLeaf를 몬 드리 안에 사용할 수 있습니까? 아니면 이에 대한 대안이 있습니까?

+0

SSAS를 인식하지 못합니다. 그러나 귀하의 요구 사항은 무엇입니까? 예를 들면 다음과 같습니다. 예 : 모든 남성의 합계를 원한다고 가정 해 봅시다. 이 카테고리의 SUM ([분류 됨. [성별])은 내 이차 이름입니다 . –

+0

@WorkingHard .. 입력 해 주셔서 감사합니다. 제 요구 사항은 차원 Month의 마지막 노드에 대한 측정 값 m1을 찾는 것입니다. 예를 들어 선택시 12 개월이 걸릴 수 있습니다. 따라서 보고서에서 마지막 행은 마지막 달 (이 경우에는 12 번째 달)에 대한 m1의 값을 표시하십시오. 어떻게 펜타 호에서 그것을합니까? – Akira

+0

[Dim Month.columnname]. [1] 작동하는지 확인하십시오. –

답변

0

다음과 같은 것은 기본 계층 구조에서 임의의 수준에서 작동해야합니다.

[Time].[Year] 멤버를 선택한 경우 작년에 [Mesures] .m1을 반환합니다 (m1 측정 값이 비어 있고 필터 조건을 충족 함).

또는 [Time].[Month] 멤버를 선택한 경우 m1 측정 값이 비어있는 지난 연도의 지난 한도를 반환합니다.

난 당신이 다른 수준에 대한 회원 (예를 들어 WITH SET time_members AS {[Time].[2017], [Time].[2017].[1]. [Time].[2017].[1].[31]})

당신이 그런 일반적인 접근 방식이 필요하지 않은 경우,이 솔루션은 간단하게 할 수 있으며, 측정 계산 속도를 혼합하는 경우가 작동합니다 생각하지 않지만 개선 될 수있다.

경고 : 쿼리로 인해 CPU 사용률이 100 %가 될 수도 있고 그렇지 않을 수도 있습니다. 따라서 서버가 응답하지 않을 수 있습니다. 따라서 테스트 환경을 신중하게 선택하십시오.

면책 조항 : 다음 예제 오류가 발생할 가능성이 매우 높습니다 그래서 나는, 순간에 테스트 몬드리안이 없습니다. 문제가 될 및해야 할 수 있습니다

Iif(
    // Check if current [Time] member is the last member: 
    [Time].CurrentMember 
    IS 
    // Take the 0th member from the end of the set (AFAIK, mondrian sets are guaranteed to be ordered): 
    Tail(
     // AFAIK, Level.Members returns the full set of members, disregarding query filters. 
     // So I use Filter function to filter members, which don't exist in context of current cell. 
     // It should leave only members, which (are related to current cell and satisfy filter conditions of the query). 
     Filter(
      [Time].CurrentMember.Level.members 
      // If your measure is nullable, then you might want to use count measure in this condition instead of m1: 
      , NOT IsEmpty([Measures].m1) 
     ) 
     // Number of members to get by the Tail() function: 
     , 1 
     // Return the only member of the set as a Member (not as a Set): 
    ).Item(0) 
    // return if true 
    , [Measures].m1 
    // else: 
    , 0 
) 

어떤 점을 테스트 할 :

측정이 유효한 경우 경우 마지막 [시간] 회원 ( 측정을 빈 (M1)가있는 경우 계산 방법
  1. 당신의 측정을 위해)

  2. 계급은 [시간] 계급의 다른 레벨에서 어떻게 계산 되는가?

  3. 보고서에서 [시간] 차원을 명시 적으로 사용하지 않으면 측정 값이 계산됩니다.

    만 슬라이서 축 [시간] 기준을 사용하면 측정 값이 계산되는 방법
  4. (에 WHERE 조건)

    는 예를 들어 [시간] 부재의 제한된 세트를 사용하면 측정 값이 계산되는 방법
  5. (예 : {[Time].[2006].[01], [Time].[2006].[02]}) 또는 Dimension에서 Filter() 함수를 사용하여 멤버를 명시 적으로 열거합니다.

  6. 다른 치수/기준에 너비를 사용하는 경우 측정 값이 계산되는 방법.

  7. 측정 값은 [시간] 차원 (분석기에서 생성 된 총계 및 소계 포함)의 계산 된 구성원에서 계산되는 방법입니다.

  8. 같은 축의 다른 레벨 멤버를 선택하면 측정 값이 계산됩니다.

+0

입력 해 주셔서 감사합니다 ... 지금 현재 나를 위해 일하고 있습니다 ... – Akira

+0

아래 쿼리를 검토 할 수 있습니까? 이 쿼리는 Pentaho Aggregation 디자이너에서 AggTable1이라는 집계 테이블을 만들 때 생성됩니다. 'Dim_Time' ''로 Dim_Time'에서 을 c1'로 , c0'''로 Dim_Time'.'month_no'을 Dim_Time'.'Time_Id' '을 선택 여기서 ''= Dim_Time'.'Time_Id' ISNULL ('Dim_Time'.'Time_Id') ASC,'Dim_Time'.'에 의해 'Dim_Time'.'Time_Id', 'Dim_Time'.'month_no' 순서에 의해 AggTable1'.'Dim_Time_Month_ (키)' 그룹 Time_Id' ASC AggTable1 테이블이 from 절에서 선택되지 않는 이유는 무엇입니까? – Akira

+0

죄송합니다. 집계 테이블에 많은 경험이 없습니다. 내가 제안 할 수있는 유일한 방법은 동일한 별칭을 가진 다른 테이블이 있는지 확인하는 것입니다.이 경우 하나의 테이블이 from 절에 나타나지 않습니다. – user4637357

관련 문제