2017-07-05 9 views
0

Ich versuche, einige bedingte Logik auf einer Hierarchieebene basiert zu tun. In meinem ssas Würfel habe ich die folgende Hierarchie definiert:Bedingte Berechnung basierend auf Hierarchieebene mit mxd und ssas 2012

  • Mannschaft
    • Subteam
      • Mitarbeiter

ich ein berechnetes Element erstellen möchten "Effizienz" w hich tut

DIVIDE([Measures].[A], [Measures].[B]) 

Aber nur für die Employee-Ebene. Für alle anderen Ebenen muss ich Mitarbeiter auszuschließen, in denen

[Measures].[c] = 1

Ich bin nicht sicher, wie dies zu erreichen, und ich hoffe, jemand kann mir helfen.

Vielen Dank!

EDIT Mein aktueller Code wie das funktioniert. Das Problem ist, dass die Mitglieder auf Subteam und Teamebene gefiltert werden nicht

case when [Organigram].[Hierarchy].Currentmember.level IS [Organigram].[Hierarchy].[Employee] 
     then DIVIDE([Measures].[a] , [Measures].[b]) 
     else 
      case when [Measures].[c] = 0 
       then DIVIDE([Measures].[a] , [Measures].[b]) 
       else NULL 
      end 
    END, 
+0

Sie sollen einen Anfang zu machen über 'IIF' und die Funktion‚Ebene‘in der Lage sein? Haben Sie diese Maßnahme auf den Cube-Skript hinzugefügt werden sollen oder nur für einen MDX-Skript über eine WITH-Klausel? – whytheq

+0

Vielen Dank für Ihren Kommentar. Ich werde eine Änderung in meiner Frage mit meinem aktuellen Code angeben. Ich möchte ein Maß zu meinem Würfel hinzufügen (Registerkarte "Berechnungen" im visuellen Studio) – Bart

Antwort

0

aus dem Kommentar von @whytheq

Erstellen Sie eine neue Maßnahme mit WITH MEMBER Im Anschluss an und verwenden Sie die IIF Test innerhalb dieser. Holen Sie so etwas wie dies richtig ersten Arbeits, bevor Sie nisten eine zweite IIF dort [Measures].[c] zu prüfen ...

WITH MEMBER [Measures].[Efficiency] 
AS 'IIF(
    [Organigram].[Hierarchy].Currentmember.level IS [Organigram].[Hierarchy].[Employee], 
    [Measures].[a]/[Measures].[b], 
    NULL 
)' 
SELECT 
{[Organigram].[NameOfLevel].members} ON ROWS, 
{[Measures].[Efficiency]} ON COLUMNS 
FROM [CubeName] 

Sobald eine einfache Abfrage funktioniert, nach und nach kleine Stücke hinzufügen komplizierter zu bekommen.

Sie können auch überprüfen, welche Ebene Sie mit den Eigenschaften .LevelName und .LevelDepth sind. Das könnte Ihren MDX kürzer und lesbarer machen oder auch nicht. https://docs.microsoft.com/en-us/sql/mdx/level-mdx:

Verwandte Themen