Ich muss eine DAX-Anweisung schreiben, die von einem konzeptionellen/logischen Standpunkt etwas komplex ist - also könnte das schwer zu erklären sein.DAX Berechnete Spalte basiert auf zwei Spalten von anderer Tabelle
Ich habe zwei Tabellen.
Auf der ersten Tabelle (siehe unten) habe ich eine Liste von numerischen Werten (Löhne). Für jeden Wert habe ich einen entsprechenden Datumsbereich. Ich habe auch EmployeeID und FunctionID. Der Zweck dieser Tabelle besteht darin, die Stundenlöhne zu verfolgen, die an Mitarbeiter gezahlt wurden, die bestimmte Funktionen in bestimmten Zeiträumen ausführen. Jede Funktion verfügt über einen eigenen Lohn auf der Lohntabelle, ABER jeder Mitarbeiter möglicherweise einen anderen Lohn für die gleiche Funktion (es gibt auch ein Maß für Funktionen und Mitarbeiter) bezahlt.
'Wages'
Wage StartDate EndDate EmployeeID FunctionID
20 1/1/2016 1/30/2016 3456 20
15 1/15/2016 2/12/2016 3456 22
27.5 1/20/2016 2/20/2016 7890 20
20 1/21/2016 2/10/2016 1234 19
Auf 'Tabelle 2' habe ich einen Datensatz für jeden Tag, an dem ein Mitarbeiter eine bestimmte Funktion bearbeitet. Denken Sie daran, Tabelle 1 enthält die Lohninformationen für jede Funktion.
'Table 2'
Date EmployeeID FunctionID DailyWage
1/1/2016 1234 $20 =CALCULATE(SUMX(???))
1/2/2016 1234 $20 =CALCULATE(SUMX(???))
1/3/2016 1234 $22 see below
1/4/2016 1234 $22
1/1/2016 4567 $27
1/2/2016 4567 $27
1/3/2016 4567 $27
(Beachten Sie, dass die Löhne im Laufe der Zeit ändern können)
Was ich versuche eine berechnete Spalte auf ‚Tabelle 2‘ genannt ‚DailyWage‘ zu tun ist, erstellen. Ich möchte, dass jede Zeile in "Tabelle 2" mir sagt, wie viel die Mitarbeiter-ID für den ganzen Tag bezahlt wurde (unter der Annahme eines 8-Stunden-Arbeitstages).
ich mit den logischen Schritten wirklich bin zu kämpfen, so dass ich bin mir nicht sicher, was der beste Weg, um diese Berechnung zu tun ist ...
Um alles noch schlimmer machen, könnte ein EmployeeID einen anderen Lohn bezahlt für die gleiche Funktion an einem anderen Datum. Sie könnten mit einer Lohnarbeitsfunktion X beginnen und dann sollte ihr Gehalt in der Zukunft einige Monate steigen ... Das heißt, wenn ich versuche, die EmployeeID und die FunctionID zu verketten, kann ich keine Verbindung herstellen die Tabellen auf dem verketteten Wert, weil keine Tabelle eindeutige Werte aufweist. Wenn wir also die EmployeeID und die FunctionID zu EmpFunID VERKATZEN, müssen wir die EmpFunID + das Datum für die aktuelle Zeile nehmen und dann sagen: "nimm die EmpFunID in der aktuellen Zeile, plus das Datum für die aktuelle Zeile.
Zeile und dann den Wert zurück, aus der Lohn Spalte auf der Lohntabelle, die die gleiche EmpFunID hat und eine Startdatum weniger, dass die CurrentRowDate und hat eine EndDate größer als die CurrentRowDate
Hier ist, was ich bis jetzt:
Step 1 = Filter 'Wages' table so that StartDate < CurrentRowDate
Step 2 = Filter 'Wages' table so that EndDate > CurrentRowDate
Step 3 = LOOKUPVALUE('Wages'[Wage], 'Wages'[EmpFunID], Table2[EmpFunID])
Jetzt brauche ich nur, dass in eine DAX-Funktion umgewandelt.
Warum erstellen Sie keine Spalte, in der die Mitarbeiter-ID und die Funktions-ID in beiden Tabellen kombiniert sind und diese zum Nachschlagen von Daten verwenden? – teylyn
Nur aktualisiert - der Lohnwert kann sich im Laufe der Zeit ändern, also auf der Tabelle 2, wenn ich Mitarbeiter # 1234 Funktion # 20 für $ 18/Std. Am 1/4/2016 und dann am 1.5.2016 habe, dass Mitarbeiter eine Gehaltserhöhung erhält zu $ 22 haben wir dann die gleiche WageFunctionID Combo mit 2 verschiedenen Lohnwerten. – james5