2017-11-24 3 views
0

쿼리 내 일부 멤버의 조건부 그룹화로 어려움을 겪고 있습니다.차원 멤버의 조건부 그룹화

간략화 된 예제에서 저는 두 개의 치수와 하나의 치수를 가지고 있습니다. 첫 번째 차원은 일부 범주를 포함하고 두 번째 차원은 일부 단위를 포함합니다. 하나의 카테고리를 제외하고 모든 카테고리는 단일 유닛 (예제에서 카테고리 A와 B)을 가지고 있습니다. 그러나 한 범주에는 여러 단위가 있습니다. 두 차원을 행에 넣으면 다음 예제와 같이 범주 C에 대해 여러 결과가 나타납니다. 내가 정말로 필요로하는 것은 Amount가 적절히 집합 된 카테고리별로 하나의 라인을 얻는 것입니다 (카테고리 C의 경우, 단일 "none"으로 교체하거나 불가능할 경우 함께 연결해야합니다 (" km, kg ").

다음 예제는 내가 성취하려는 것을 보여 주어야합니다.

Category  Unit  Amount 
A   km   10 
B   km   5 
C   km   5 
C   kg   2 
C   km   5 

하지만 난 정말 달성하는 데 필요한 것은 그룹 차원 분류하고 치수 단위를 치료하고 양을 측정 :

SELECT 
      NON EMPTY { [Measures].[Amount] } ON COLUMNS, 
      NON EMPTY { ([Grouping A].[Category].[Category].ALLMEMBERS * 
         [Grouping B].[Unit].[Unit].ALLMEMBERS) } ON ROWS 
    FROM [ExampleCube] 

내가 데이터를 다음과 같이 얻을 : 다음 쿼리와

적절하게 다음과 같이 :

Category  Unit  Amount 
A   km   10 
B   km   5 
C   none  12 

아마도 이것은 정말로 간단하지만 나는 시도했다. 결국 아무런 결과도없이이 문제를 해결할 수 있습니다.

모든 아이디어를 얻을 수 있습니다.

감사합니다.

답변

1

단순하지 않습니다. OLAP은 이러한 종류의 작업을 위해 설계되지 않았습니다. 그럼에도 불구하고 다음과 같은 방법으로 그것을 해결할 수 :

With 
[Measures].[Unit] as 
IIF(
    NonEmpty(
     [Grouping B].[Unit].[Unit].Members, 
     [Measures].[Amount] 
    ).Count > 1, 
    "None", 
    NonEmpty(
     [Grouping B].[Unit].[Unit].Members, 
     [Measures].[Amount] 
    ).Item(0).Name 
) 


Select 
Non Empty { [Measures].[Unit],[Measures].[Amount] } on 0, 
Non Empty { [Grouping A].[Category].[Category].Members } on 1 
From [ExampleCube] 
+0

(상향)는 컨텍스트를 잡아 그룹화 B에 대한'EXISTING'이 필요합니다? – whytheq

+0

그룹핑 B를 사용하는 것은 의미가 없습니다. 없음을 한 번 표시하는 방법은 무엇입니까? –

+0

완벽합니다. 고맙습니다 – jonas

관련 문제