Thursday 23 February 2017

Sql 12 Monat Gleitender Durchschnitt

Ich habe eine Tabellenproduktion, die die folgende Struktur enthält: Ich habe Daten für jeden Repräsentanten von 112011 bis 812013. Was ich tun möchte, ist, einen 12 Monate gleitenden durchschnittlichen Anfang 112012 für jeden Repräsentanten wie folgt zu erstellen: wo jede Zeile darstellt Der zwölfmonatige gleitende Durchschnitt für den besagten Vertreter zur angegebenen Zeit. Ich fand einige Beispiele, die vage nahe waren und ich versuchte sie ohne Erfolg. Es scheint die Hinzufügung einer Gruppe durch rep-Komponente ist die große Abweichung von anderen Beispielen. Dies ist etwa so weit wie ich bekam: Diese Abfrage scheint einen Gesamtdurchschnitt oder Summe zu ziehen, da es keine Gruppierung in der korrelierten Unterabfrage gibt. Wenn ich versuche zu gruppieren, bekomme ich einen Fehler, dass es nur höchstens eine Zeile zurückkehren kann. Ich möchte ein Diagramm mit diesem 12monat-gleitenden Durchschnitt für die letzten 12 Monate, d. h. auf der horizontalen Achse der letzten 12 Monate, und auf der vertikalen Achse der Krankheits-Prozentsatz. Ich habe einen Dataset namens Last12Months, aber natürlich ist dies falsch, z. Für den gleitenden Durchschnitt kranker Prozentsatz vom Juli 2010 benötigt der gleitende Durchschnitt die Krankheits-Prozentsätze von August 2009 bis Juli 2010. HOwever, wenn ein Datenbestand verwendet wird, der die letzten 12 Monate enthält, sind die Krankheits-Prozentsätze für vor Juli 2010 nicht für das Berechnen des Bewegens vorhanden Durchschnitt von Juli 2010. Könnten Sie bitte geben Sie weitere Erklärungen zu diesem können Sie einige Bericht Muster Layout geben, um Ihre Anforderung an Ihren letzten Absatz zu löschen, scheint es, dass Sie einen Filter zur Kategorie Gruppe in der Tabelle geben wollen, um die letzten letzten 12 anzeigen Monats, rechts, wenn das der Fall ist, ich denke, Sie können die Nutzung von Heute Funktion in Reporting Services, um das aktuelle Jahr und Monat erhalten, dann verwenden Sie dieses Jahr zu subtrahieren 1, erhalten Sie letzten 12 Monate. Wenn ich Sie falsch verstehe, fühlen Sie bitte sich frei, uns zu informieren. Vielen Dank, Challen Fu Bitte denken Sie daran, die Antworten als Antworten markieren, wenn sie helfen und markieren sie, wenn sie keine Hilfe bieten. Markiert als Antwort von HennieErgon Freitag, 19. August 2011 11:14 Uhr IIf (Monat (heute ()) lt 10, (Jahr (Heute ()) - 2) amp quotM0quot amp Monat (Heute ()), (Jahr (Heute)) - 2) amp quotMquot amp Monat (heute ())) IIf (Monat (heute ()) lt 10, Jahr (Heute ()) amp quotM0quot amp (Monat (heute (Heute ()) - 1)) Als Antwort markiert von Challen Fu Moderator Samstag, 20. August 2011 um 12:50 Uhr Editiert von HennieErgon Montag, August 22, 2011 6:18 AM Richtige Reihenfolge der Formel Freitag, 19. August 2011 um 11:12 Uhr Nun möchte ich ein Diagramm mit diesem 12monat-gleitenden Durchschnitt für die letzten 12 Monate, dh auf der horizontalen Achse der letzten 12 Monate, und auf Die vertikale Achse der Prozentsatz der Krankheit. Ich habe einen Dataset namens Last12Months, aber natürlich ist dies falsch, z. Für den gleitenden Durchschnitt kranker Prozentsatz vom Juli 2010 benötigt der gleitende Durchschnitt die Krankheits-Prozentsätze von August 2009 bis Juli 2010. HOwever, wenn ein Datenbestand verwendet wird, der die letzten 12 Monate enthält, sind die Krankheits-Prozentsätze für vor Juli 2010 nicht für das Berechnen des Bewegens vorhanden Durchschnitt von Juli 2010. Könnten Sie bitte geben Sie weitere Erklärungen zu diesem können Sie einige Bericht Muster Layout geben, um Ihre Anforderung an Ihren letzten Absatz zu löschen, scheint es, dass Sie einen Filter zur Kategorie Gruppe in der Tabelle geben wollen, um die letzten letzten 12 anzeigen Monats, rechts, wenn das der Fall ist, ich denke, Sie können die Nutzung von Heute Funktion in Reporting Services, um das aktuelle Jahr und Monat erhalten, dann verwenden Sie dieses Jahr zu subtrahieren 1, erhalten Sie letzten 12 Monate. Wenn ich Sie falsch verstehe, fühlen Sie bitte sich frei, uns zu informieren. Vielen Dank, Challen Fu Bitte denken Sie daran, die Antworten als Antworten markieren, wenn sie helfen und markieren sie, wenn sie keine Hilfe bieten. Als Antwort markiert von HennieErgon Freitag, August 19, 2011 11:14 AM Danke für die Antwort. Ich müde mit Filter auf Datum Kategorie, aber dann habe ich andere Probleme. Ich habe ein Beispiel beigefügt. Wie Sie sehen können, ist mein Datumsformat wie 2009M09. Aber für die letzten 12 (oder 24) Monate zu filtern, muss ich Jahr und Monat aufteilen. HOwever, wie Sie in dem Beispiel sehen können, dann zum Beispiel die 2009M10, 2009M11 und 2009M12 weggelassen werden, weil es 10, 11 und 12 sind niedriger als 9 denken. Mittwoch, 17. August 2011 09.46 Uhr Wie Sie sagte mir, Ich habe einen Filter auf der YearMonth Kategorie: IIf (Monat (heute)) lt 10, (Jahr (Heute ()) - 2) amp quotM0quot amp Monat (heute () (Heute ()) amp quotM0quot amp (Monat (heute)) - 1), Jahr (Heute ()) amp quotMquot amp (Monat (heute ()) - 1)) Als Antwort markiert von Challen Fu Moderator Samstag, den 20. August 2011 um 12:50 Uhr Editiert von HennieErgon Montag, den 22. August 2011 um 06:18 Uhr correct order of formula Friday, August 19, 2011 11:12 AMRolling 12 Monate Durchschnitt in DAX Die Berechnung der rollenden 12-Monats-Durchschnitt in DAX sieht aus wie eine einfache Aufgabe, aber es verbirgt sich etwas Komplexität. Dieser Artikel beschreibt, wie die beste Formel zu schreiben, um häufige Fallstricke mit Zeit Intelligenz Funktionen zu vermeiden. Wir beginnen mit dem üblichen AdventureWorks Datenmodell mit Produkten, Verkauf und Kalender Tabelle. Der Kalender wurde als Kalender-Tabelle markiert (es ist notwendig, mit jeder Zeit Intelligenz-Funktion zu arbeiten) und wir bauten eine einfache Hierarchie Jahr-Monat-Datum. Mit dieser Einrichtung ist es sehr einfach, eine erste PivotTable zu erstellen, die den Umsatz im Laufe der Zeit zeigt: Wenn Trendanalysen durchgeführt werden, wenn der Verkauf saisonal bedingt ist oder allgemeiner, wenn Sie den Effekt von Spitzen und Tropfen im Verkauf entfernen möchten, Gemeinsame Technik ist, dass der Berechnung der Wert über einen bestimmten Zeitraum, in der Regel 12 Monate, und durchschnittlich. Der rollende Durchschnitt über 12 Monate bietet einen reibungslosen Indikator für den Trend und ist sehr nützlich in Charts. Angesichts eines Datums können wir den zwölfmonatigen fortlaufenden Durchschnitt mit dieser Formel berechnen, die noch einige Probleme hat, die wir später lösen werden: Das Verhalten der Formel ist einfach: Es berechnet den Wert von Sales nach dem Erstellen eines Filters auf dem Kalender, der Zeigt genau ein Jahr voller Daten. Der Kern der Formel ist das DATESBETWEEN, das einen inklusiven Satz von Daten zwischen den beiden Grenzen zurückgibt. Der untere Punkt lautet: Lesen aus dem Innersten: Wenn wir Daten für einen Monat zeigen, sagen wir Juli 2007, nehmen wir das letzte sichtbare Datum mit LASTDATE, das den letzten Tag im Juli 2007 zurückgibt. Dann benutzen wir NEXTDAY, um den 1. zu nehmen Von August 2007 und wir verwenden schließlich SAMEPERIODLASTYEAR, um es zurück zu verschieben ein Jahr, mit dem 1. August 2006. Die obere Grenze ist einfach LASTDATE, dh Ende Juli 2007. Wenn wir diese Formel in einer PivotTable verwenden, sieht das Ergebnis gut aus, aber wir Haben Sie ein Problem für das letzte Datum: In der Tat, wie Sie in der Figur sehen können, wird der Wert bis 2008 korrekt berechnet. Dann gibt es keinen Wert im Jahr 2009 (was richtig ist, haben wir nicht Umsatz im Jahr 2009), aber es gibt Ein überraschender Wert im Dezember 2010, wo unsere Formel zeigt die Gesamtsumme statt einen leeren Wert, wie wir erwarten würden. In der Tat, am Dezember gibt LASTDATE den letzten Tag des Jahres und NEXTDAY sollte am 1. Januar 2011 zurückgegeben werden. Aber NEXTDAY ist eine Zeit-Intelligenz-Funktion und es wird erwartet, dass Sätze von bestehenden Daten zurückzugeben. Diese Tatsache ist nicht sehr offensichtlich und es ist ein paar Worte mehr wert. Zeit-Intelligenz-Funktionen führen keine mathematische Daten aus. Wenn Sie den Tag nach einem bestimmten Datum nehmen möchten, können Sie einfach 1 zu einer beliebigen Datumsspalte hinzufügen und das Ergebnis ist der nächste Tag. Stattdessen verschieben Zeit-Intelligenz-Funktionen Mengen von Datum hin und her im Laufe der Zeit. So nimmt NEXTDAY seine Eingabe (in unserem Fall eine einreihige Tabelle mit dem 31. Dezember 2010) auf und verschiebt es einen Tag später. Das Problem ist, dass das Ergebnis 1. Januar 2011 sein sollte, aber da die Kalendertabelle dieses Datum nicht enthält, ist das Ergebnis BLANK. So berechnet unser Ausdruck Umsatz mit einem leeren unteren Grenze, die den Beginn der Zeit bedeutet, was als Ergebnis der Gesamtsumme der Verkäufe bedeutet. Um die Formel zu korrigieren, genügt es, die Auswertungsreihenfolge der unteren Grenze zu ändern: Wie Sie sehen können, wird NEXTDAY nach der Umschaltung von einem Jahr aufgerufen. Auf diese Weise nehmen wir 31 Dezember 2010, verschieben Sie es auf 31 Dezember 2009 und nehmen Sie am nächsten Tag, die 1. Januar 2010 ist: ein vorhandenes Datum in der Kalender-Tabelle. Das Ergebnis ist nun das Erwartete: An dieser Stelle müssen wir nur diese Zahl durch 12 dividieren, um den rollenden Durchschnitt zu erhalten. Aber, wie Sie sich leicht vorstellen können, können wir nicht immer durch 12 teilen. In der Tat, am Anfang der Zeit gibt es nicht 12 Monate zu aggregieren, sondern eine niedrigere Zahl. Wir müssen die Anzahl der Monate berechnen, für die es Verkäufe gibt. Dies kann durch Cross-Filterung der Kalender-Tabelle mit der Verkaufstabelle, nachdem wir den neuen 12 Monate Kontext angewendet werden, erreicht werden. Wir definieren eine neue Kennzahl, die die Anzahl der bestehenden Monate im Zeitraum von 12 Monaten berechnet: Sie können in der nächsten Abbildung sehen, dass die Months12M-Methode einen korrekten Wert berechnet: Es ist zu beachten, dass die Formel nicht funktioniert, wenn Sie einen Zeitraum wählen Länger als 12 Monate, da der CalendarMonthName nur 12 Werte hat. Wenn Sie längere Zeiträume benötigen, müssen Sie eine YYYYMM-Spalte verwenden, um mehr als 12 zählen zu können. Der interessante Teil dieser Formel, die Cross-Filtering verwendet, ist die Tatsache, dass sie die Anzahl der verfügbaren Monate berechnet, auch wenn Sie andere Filter verwenden Attribute. Wenn Sie zum Beispiel die blaue Farbe mit einem Slicer auswählen, dann starten Sie im Juli 2007 (nicht im Jahr 2005, wie es für viele andere Farben passiert). Mit dem Cross-Filter von Sales berechnet die Formel korrekt, dass es im Juli 2007 einen einmonatigen Verkaufsumsatz für Blue gibt: An diesem Punkt ist der rollende Durchschnitt nur ein DIVIDE weg: Wenn wir ihn in einer Pivot-Tabelle verwenden, sind wir noch Haben ein kleines Problem: Tatsächlich wird der Wert auch für Monate berechnet, für die es keine Verkäufe gibt (dh zukünftige Monate): Dies kann mit einer IF-Anweisung gelöst werden, um zu verhindern, dass die Formel Werte anzeigt, wenn es keine Verkäufe gibt. Ich habe nichts gegen IF, aber für die Performance-süchtig unter euch, es ist immer daran zu erinnern, dass IF ein Performance-Killer sein könnte, denn es könnte DAX Formel Motor Kraft treten in. In diesem speziellen Fall ist der Unterschied vernachlässigbar, aber , In der Regel der beste Weg, um den Wert zu entfernen, wenn es keine Verkäufe gibt, ist auf reine Speicher-Engine-Formeln wie folgt verlassen: Vergleich eines Diagramms mit dem Avg12M mit einem anderen, die Verkäufe zeigt, können Sie leicht zu schätzen wissen, wie der rollende Durchschnitt Umreißt Trends in viel sauberer Weise: Halten Sie mich informiert über kommende Artikel (Newsletter). Deaktivieren Sie die Datei frei herunterladen.


No comments:

Post a Comment