2016-07-26 16 views
0

Ich versuche, eine berechnete Spalte in SSAS tabellarisches Modell mit DAX zu erstellen. Ich möchte eine dynamische Indexspalte in einer Tabelle. Das bedeutet, dass der Index bei der Filterung der Tabelle bei 0 beginnt. Stellen Sie sich vor Sie haben eine Tabelle wie:DAX - Create Dynamic Index Spalte

item  index 
apple  0 
banana 1 
celery 2 
broccoli 3 

Wenn ich die Tabelle filtern, um nur Gemüse normalerweise der Index noch wäre:

item  index 
celery 2 
broccoli 3 

Aber ich es also

item  index 
celery 0 
broccoli 1 

sein wollen Bisher erstelle ich den Index mit: (Ich indexiere eine Datumsdimensionstabelle)

=CALCULATE(COUNT([Date])-1, ALL('DimDate'), FILTER(DimDate, [Date]<=EARLIER([Date]))) 

Ich habe versucht, mit ALLEXCEPT() und ich habe versucht, eine Offset-Spalte, indem Sie den ersten Wert des Index mit FIRSTNONBLANK, aber noch nicht erfolgreich war.

Irgendwelche Ideen oder Hilfe?

Antwort

0

Sie können keine dynamisch berechnete Spalte haben, da berechnete Spalten zur Entwurfszeit ausgewertet und gespeichert werden. Sie müssten also eine Kennzahl für die dynamische Indizierung verwenden. Hier ist ein Ansatz unter Verwendung von ALLSELECTED mit zusätzlichen Parsing, um leer als Null anzuzeigen.

= 
IF (
    ISBLANK (
     CALCULATE (
      COUNTROWS (DimDate), 
      FILTER (ALLSELECTED (DimDate), DimDate[Date] < MAX (DimDate[Date])) 
     ) 
    ), 
    0, 
    CALCULATE (
     COUNTROWS (DimDate), 
     FILTER (ALLSELECTED (DimDate), DimDate[Date] < MAX (DimDate[Date])) 
    ) 
)