2017-05-17 1 views
0

Stellen Sie sich einen Würfel mit den Dimensionen DimA, DimB, DimC und DimD vor.SSAS MDX Berechnetes Element, mehrere Bereiche

Ich möchte ein berechnetes Mitglied, das nur berechnet werden sollte, wenn es gegen DimA oder DimB geschnitten wird. Wenn nur gegen DimC oder DimD geschnitten, sollte es Null zurückgeben.

Zur Zeit habe ich erreicht dies, indem Sie die 3 berechnete Elemente unter Verwendung von:

Create Member CurrentCube.[Measures].[CalMeasure1] As Null, VISIBLE = 0; 

SCOPE([Measures].[CalcMeasure1]); 
     SCOPE ([DimA].[DimA].[DimA]); 
      This = [Measures].[Camp Index]; 
     END SCOPE; 
END SCOPE; 


Create Member CurrentCube.[Measures].[CalcMeasure2] As Null, VISIBLE = 0; 

SCOPE([Measures].[CalcMeasure2]); 
     SCOPE ([DimB].[DimB].[DimB]); 
      This = [Measures].[Camp Index]; 

CREATE MEMBER CURRENTCUBE.[Measures].[CalcMeasure3] 
AS IIF(ISEMPTY([Measures].[CalcMeasure1]),[Measures].[CalcMeasure2],[Measures].[CalcMeasure1]), 
VISIBLE = 1 ; 
     END SCOPE; 
END SCOPE; 

ich ziemlich viele von ihnen zu schaffen haben, so ideal, wollte ich mit einer einzigen Maßnahme, um dies zu tun, anstatt 3 separate Maßnahmen. Ich habe versucht, einen verschachtelten Bereich zu erstellen. Ich habe auch versucht, beide Dimensionshierarchien in einen einzigen Bereich zu bringen. Keine dieser Methoden funktioniert jedoch. Beide Methoden erfordern, dass die Maßnahme gegen DimA und DimB aufgeteilt wird. Ich brauche es, wenn es gegen DimA ODER DimB geschnitten ist.

Hinweis Mein Code über Arbeit der Fall ist, möchte ich es auf ein einziges berechnetes Element

bearbeiten nur kondensieren: - Erwartete Ergebnisse für verschiedene Pivot-Tabelle Verbräuche.

DimA Attribute CalcMeasure3 
1     1.1 
2     1.1 
3     8.6 


DimB Attribute CalcMeasure3 
4     2.1 
5     2.1 
6     9.6 


DimA Attribute DimC Attribute CalcMeasure3 
1     A     1.1 
2     B     1.1 
3     C     8.6 


DimB Attribute DimD Attribute CalcMeasure3 
4     D     1.1 
5     E     1.1 
6     F     8.6 

DimC Attribute CalcMeasure3 
A     (Null) 
B     (Null) 
C     (Null) 


DimD Attribute CalcMeasure3 
D     (Null) 
E     (Null) 
F     (Null) 

Antwort

1

Wie über diese berechnete Kennzahl, ohne Rahmen:

WITH MEMBER [Camp Index] AS 
IIF( 
    not ([DimA].[DimA].CurrentMember is [DimA].[DimA].[All]) or not([DimB].[DimB].CurrentMember is [DimB].[DimB].[All]), 
[You Calcuate], 
IIF( 
    not ([DimC].[DimC].CurrentMember is [DimC].[DimC].[All]) or not([DimD].[DimD].CurrentMember is [DimD].[DimD].[All]), 
    NULL, 
    [You Calcuate] 
), 
NULL 
) 
SELECT 
{[Camp Index]} on 0 
from [Adventure Works] 
+0

(überhöht) geschnitten Dank für Beitrag Tom – whytheq

0

Meine erste Vermutung:

Scope([Measures].[Camp Index]); 
    This = IIF(
       [DimC].[DimC].[DimC].CurrentMember is [DimC].[DimC].[All] 
       and 
       [DimD].[DimD].[DimD].CurrentMember is [DimD].[DimD].[All] 
       [Measures].[Camp Index], 
       NULL 
    ); 
End Scope; 
+0

Dank. Meinten Sie [DimA]. [DimA]. [DimA] .CurrentMember ist [DimA]. [DimA]. [Alle] und [DimB]. [DimB]. [DimB] .CurrentMember ist [DimB]. [DimB] .[Alle]? Wenn dies der Fall ist, gibt dies immer Null zurück, selbst wenn es durch DimA, DimB oder beides geschnitten wird. Auch NULL, wenn durch DimC, DimD oder Dim (n) – user8025238

Verwandte Themen