2016-05-05 7 views
0

ich einen "sales" Tisch mit Team-ID, der Zahlungsart und Datum (siehe Beispiel unten):DAX Time Intelligence mit Conditional Logic

enter image description here

ich eine DAX-Formel schreiben will, das wird „Lookup "Der Umsatz des Vormonats für ein" Monatliches "Team und der 3-Monats-Vorverkaufsbetrag für ein" Vierteljährliches "Team. Die Suche muss auch nach Team-ID gefiltert werden, sodass die vorherigen Verkäufe zum selben Team gehören.

Hier ist ein Beispiel für die gewünschte Ausgabe (Umsatzveränderung):

enter image description here

PriorMonthSales =CALCULATE(
SUM(Table[Sales]), 
FILTER(
    Table[TeamID]&& 
    Table[Date] - 1 
) 

PriorQuarterSales =CALCULATE(
SUM(Table[Sales]), 
FILTER(
    Table[TeamID]&& 
    Table[Date] - 3 
) 

PriorSales = IF(Table[PaymentType] = "Monthly",PriorMonthSales, PriorQuarterSales) 

Dieser offensichtlich Formeln nicht das gewünschte Ergebnis nicht produzieren, aber ich bin zu teilen hier sie meinen Ansatz zu zeigen, um das zu lösen. Vielleicht kann jemand, der hier besser informiert ist, mit der richtigen Syntax und Logik helfen.

Danke!

Antwort

0

Um die Summe des vorherigen Monats/Quartals zu berechnen, können Sie eine berechnete Spalte hinzufügen. Sie müssen jedoch Ihre Monatsspalte in ein Datum ändern. jan 16 => 1/1/2016

Formel:

= 
IF (
    myTable[paymenttype] = "monthly", 
    CALCULATE (
     SUM (myTable[sales]), 
     FILTER (
      myTable, 
      myTable[TeamID] = EARLIER (myTable[TeamID]) 
       && DATEADD (myTable[date], 1, MONTH) = EARLIER (myTable[date]) 
       && myTable[paymenttype] = EARLIER (myTable[paymenttype]) 
     ) 
    ), 
    CALCULATE (
     SUM (myTable[sales]), 
     FILTER (
      myTable, 
      myTable[TeamID] = EARLIER (myTable[TeamID]) 
       && DATEADD (myTable[date], 3, MONTH) = EARLIER (myTable[date]) 
       && myTable[paymenttype] = EARLIER (myTable[paymenttype]) 
     ) 
    ) 
)