Ich arbeite an einem Tabellenwürfel in SSAS 2012 SP1 CU4. Ich habe 3 Dimensionen (Anforderung, Anforderungsstatus, Datum) und 1 Fakt (Anforderungszählungen). Meine Faktentabelle entspricht den Anforderungen von RequisitionKEY, RequisitionStatusKEY und SnapshotDateKey.
Ich habe Kennzahlen berechnet, die im Wesentlichen den letzten nicht leeren Wert (wie eine halbadditive Kennzahl) für den angegebenen Zeitraum erhalten, unabhängig davon, ob es sich um Jahr, Monat oder Datum handelt:
Openings:=CALCULATE(Sum('Requisition Counts'[NumberOfOpeningsQT]),
Filter('Date','Date'[DateKey] = Max('Requisition Counts'[SnapshotDateKEY])))
Dies funktioniert gut, bis Sie den Anforderungsstatus in den Mix einfügen. Ich habe Zeilen für jede Anforderung für jeden Tag im Jahr 2013. Für eine der Anforderungen war der Anforderungsstatus für die ersten 6 Monate ausstehend und wurde dann für alle Daten vom 1. Juli bis heute in Genehmigt geändert. Wenn ich die Anzahl der Öffnungen für die Anforderung auf Monatsebene für Juli zusammenfasse, sehen Benutzer zwei Zeilen: die Summe der Öffnungen für den letzten ausstehenden Tag im Juli, an dem sie ausstanden, und die Summe der Öffnungen für den letzten besetzten Tag in Juli, dass es genehmigt wurde.
Obwohl die Summe von 2 korrekt ist, muss ich diese Berechnung so ändern, dass ich nur den aktuellsten Anforderungsstatus für den ausgewählten Datumszeitraum (Genehmigt) erhalte und entweder 0 oder null oder leer für die ausstehende Genehmigungszeile in der Pivot-Tabelle anzeige.
Die Anforderungsstatus-Tabelle sieht folgendermaßen aus:
Update: Hier ist ein Link zu einem von mir erstellten PowerPivot-Modell , das einige bereinigte Daten enthält, um diese Frage zu beantworten. Dies sollte die Tabellenschemata besser erklären. Das Feld NumberOfOpeningsQT gibt im Grunde die Anzahl der offenen Stellen an, die sie für diesen Job haben. Manchmal ist es 1, manchmal ist es mehr als 1. Es ändert sich normalerweise nicht im Laufe der Zeit, aber ich denke, es könnte. Ich versuche, die Öffnungsberechnung so zu gestalten, dass ich die gewünschte Antwort bekomme. Ich warf einige andere Berechnungen hinein, um einige Dinge zu zeigen, die ich versucht hatte und die vielversprechend waren, die ich aber nicht zur Arbeit bringen konnte.
quelle
Antworten:
Sie können die folgende Berechnung versuchen:
Der wichtige Teil ist das Einstellen des richtigen Filterkontexts für das Äußere
CALCULATE
.Mit
CALCULATETABLE
definieren wir die spezifischen Zeilen, die das ÄußereCALCULATE
berücksichtigen soll: das letzte nicht leere Snapshot-Datum für alle Anforderungen (oder für eine bestimmte Anforderung unter Berücksichtigung des Kontexts jeder Anforderung in einer Pivot-Tabelle), unabhängig von den Filtern in der Anforderungsstatus, der mit derALL
Funktion erreicht wird.Die Maßnahme funktioniert nicht genau so, wie Sie es möchten. Sie sagen, Sie würden erwarten, dass die Gesamtsumme für Genehmigt 2
2013-11059
beträgt . Am Beispiel der Anforderung aus dem Power Pivot-Modell wird nur berücksichtigt, da es 2013-07-01 1 Genehmigten Status und 2013-07-02 einen weiteren Status gibt der letzte Status für die Summe, was zu 1 führt.quelle
Ich habe dies noch nicht modelliert, aber eines, das mir in den Sinn kommt, ist das Hinzufügen eines weiteren FILTER () zu Ihrem CALCULATE () - Bereich wie folgt: FILTER ('Anforderungsstatus', 'Anforderungsstatus' [Schlüssel] = MAX (' FactRequisition '[RequisitionKey])). Mein Gedanke ist, dass durch Hinzufügen dieser Option die Anforderungstabelle so gefiltert wird, dass sie nur die neueste Anforderung enthält. Ich gehe davon aus, dass eine Anforderung nicht von Genehmigt auf Ausstehende Genehmigung umgeschaltet werden kann, was einen Knick in diese ...
quelle