Tuesday 10 October 2017

Moving Average Power Bi


Post navigation Berechnen eines Moving Average in PowerPivot Vor zwei Wochen versprach ich, darüber zu sprechen, wie man einen gleitenden Durchschnitt in PowerPivot zu generieren, aber dann letzte Woche habe ich abgelenkt, indem ich Ihnen sagen, über eine coole Art und Weise zu zeigen, YouTube Videos auf Ihrem SharePoint-Seiten mit einem Web Teil gefunden auf CodePlex, dass einige meiner Arbeitsteammitglieder gefunden haben. Es war so einfach zu implementieren, ich musste es nur mit euch allen teilen. Allerdings kehrt zurück auf das Thema der Berechnung eines gleitenden Durchschnitt, könnte die erste Frage, was ist ein gleitender Durchschnitt und warum sollten Sie dann eine verwenden möchten. Ein gleitender Durchschnitt ist einfach die Summe von zwei oder mehr zeitabhängigen Werten, in denen die Summe dann durch die Anzahl der verwendeten Werte dividiert wird. Zum Beispiel, wenn ich über Aktienkurse reden, möchte ich vielleicht etwas wie ein 7-Tage gleitenden Durchschnitt verwenden, um den Effekt der einzelnen Tagesspitzen oder Tropfen in den Aktienkurs zu dämpfen, die nicht indikativ für die gesamte Aktienentwicklung sind. (Manche Langzeitinvestoren verwenden sogar längerfristig gleitende Durchschnitte.) Das bedeutet nicht, dass wenn eine Aktie stürzt oder steigt, würde ich mich zurücklehnen, bis der gleitende Durchschnitt mir sagt, dass ich handeln soll. Jeder gute Aktieninvestor wird Ihnen sagen, es gibt viele andere Faktoren sowohl intern als auch extern zu einer Firma, die Ihre Hand könnte zum Verkauf oder Kauf einer bestimmten Aktie. Aber der Punkt ist, und dies ist die Antwort auf die zweite Frage, ein gleitender Durchschnitt dämpft Zufälligkeit, so kann ich leichter sehen das allgemeine Muster der Zahlen, die ich verfolgen. Ok, so nehme ich an, für Contoso zu arbeiten und wollte wissen, ob die Verkäufe steigen, fallen oder allgemein flach sind. Wenn ich tägliche Verkäufe betrachte, sind die Zahlen wahrscheinlich, oben und unten in keinem bestimmten Muster zu schwanken, das mich vom Aufflackern eines Gesamttrends hindert. Die folgende Abbildung zeigt Contoso täglichen Contoso-Umsatz über einen Zeitraum von 3 Monaten im Sommer 2008. Ich beschloss, die Daten als Diagramm zeigen, um zu zeigen, wie Umsatz schwankt am Tag zeigen Informationen, die ich nicht in der Lage, so leicht zu sehen war Eine Tabelle mit denselben Werten erstellt. Natürlich könnte ich ein ganzes Jahr oder mehr einplanen, aber um einzelne Tage zu sehen, müsste ich das Diagramm wesentlich erweitern. Doch auch mit dieser kleineren Zeit, kann ich sehen, dass der Umsatz sehr schön schwanken. Aber ich könnte fragen, sind die Umsätze steigen, sinken oder bleiben die gleichen. Wenn ich ein gutes Auge habe, könnte ich sagen, dass Verkäufe Spitze gegen Ende Juli und dann fallen ein wenig zurück, wie das Diagramm in August geht. Aber das ist nicht so offensichtlich wie die Tatsache, dass es viel Tagesfluktuation gibt. Also, wie kann ich visuell anzeigen Trends mit Moving Average Sales. Jetzt für den Zweck dieser Illustration, Im gehend, einen viertägigen gleitenden Durchschnitt zu schaffen, aber ehrlich, gibt es keine eine richtige Anzahl von Perioden in einem gleitenden Durchschnitt. In der Tat, ich sollte mit verschiedenen Zeitperioden zu experimentieren, um zu sehen, welche Zeitspanne kann ich nicht nur die gesamte Trends, sondern auch in diesem Fall, wo ich bin Ladenverkauf, bei saisonalen Veränderungen. Ich weiß bereits, dass, wenn ich Daten von Tag anzeigen, kann ich die folgende Formel verwenden, um die täglichen Verkäufe von nur unseren Filialkanal zu berechnen. (Ja, ich könnte einfach verwenden SalesAmount und wenden Sie einen Kanal Slicer nur Store Sales verwenden, aber lässt sich mit dem Beispiel.) Ich kann dann mit diesem berechneten Maßstab, um die vorherigen Tage Umsatz für jeden Tag durch die Schaffung der folgenden Maßnahme zu berechnen. StoreSales1DayAgo: CALCULATE (StoreSales, DATEADD (DimDateDateKey, -1, Tag)) Sie können vermuten, dass die Formel für die Berechnung der Verkäufe vor zwei Tagen und drei Tagen jeweils sind: StoreSales2DayAgo: CALCULATE (StoreSales, DATEADD (DimDateDateKey, 2, Tag)) StoreSales3DayAgo: CALCULATE (StoreSales, DATEADD (DimDateDateKey, -3, Tag)) Mit diesen vier für jeden Tag berechneten Werten kann ich die Summe dieser Werte berechnen und durch 4 dividieren Den folgenden berechneten Wert: FourDayAverage: (StoreSales StoreSales1DayAgo StoreSales2DayAgo StoreSales3DayAgo) 4.0 Nun, wenn ich wieder auf meiner Kartenseite, sollte ich sehen, dass Excel die Feldliste aktualisiert, um die neuen berechneten Maßnahmen enthalten. Wenn ich dann das Feld FourDayAverage zu dem Feld Werte hinzufügen, um eine zweite Serie im Diagramm zu erstellen, habe ich jetzt sowohl den tatsächlichen täglichen Umsatz als auch den viertägigen gleitenden Durchschnitt in demselben Diagramm angezeigt. Das einzige Problem ist, ich möchte auch das Diagrammformat ändern, um den täglichen Verkauf (meine erste Datenreihe) als Spalten und meinen gleitenden Durchschnitt (meine zweite Datenreihe) als Linie anzuzeigen. Wenn ich mit der rechten Maustaste auf das Diagramm und wählen Sie Diagrammtyp ändern, kann ich Combo als Diagrammtyp wählen, wie in der folgenden Abbildung gezeigt. In diesem Fall ist das Clustered Column Line Diagramm genau das, was ich möchte. Da ich die gleitende mittlere Reihe dem Values-Bereich zuletzt hinzugefügt habe, werden sie standardmäßig die Zeile und alle anderen Datenreihen als gruppierte Spalten angezeigt. Da ich nur einen Wert für jeden Tag habe, zeigt das Diagramm eine individuelle Spalte pro Tag. Wenn ich meine Datenreihe in den Wertebereich in der falschen Reihenfolge eingetragen hatte, konnte ich einfach diesen Dialog verwenden, um den Diagrammtyp für jede Serie auszuwählen. Wenn ich in diesem Dialog auf OK klicke, sieht mein Diagramm nun wie das Folgende aus, was deutlich mehr den Gesamttrend und weniger Tagesfluktuation zeigt. Aber warten, gibt es einen einfacheren Weg, dies zu tun Warum ja gibt es. Aber um zu lernen, wie man das macht, musst du bis nächste Woche warten. Post navigation Meine Archive E-Mail-Abonnement Themen Ich rede überSeveral Möglichkeiten, dies zu nähern. Hier sind ein paar für Sie. Diese beiden erfordern eine vollständig belegte Datumstabelle, getrennt von Ihrer Hauptdatentabelle (Fakten). 1. Berechnen Sie den Durchschnitt über die letzten 84 Tage (12 volle Wochen) wie folgt. Wo AvgSalesAmt ist ein einfacher Durchschnitt von SalesAmount für Ihre Transaktionen. FILTER erfasst nur die Datensätze, die sich in dem 84-Tage-Fenster ab dem MAX-Datum befinden. 2. Berechnen Sie den Durchschnitt der letzten 12 Wochen anhand einer Wochenkettennummer in Ihrer Datumstabelle. Die Sequenznummer der Woche würde bei 1 für die erste Woche in Ihrer Datumstabelle beginnen und über alle Jahre in der Tabelle fortfahren (kein Rücksetzen am Jahresende). Die Wochensequenz kann so im DAX erreicht werden. Anmerkung: es wäre effizienter, diese aus einer relationalen Datumsdimension oder in SQL zu berechnen. Egal, wenn Sie es tun müssen, in DAX, das funktioniert. Der DimDateCalendarYearWeek befindet sich im Format quotyyyyy-wwquot. Das gibt Ihnen eine Sequenz beginnend bei 1. Dann können Sie berechnen nach 12 Wochen mit diesem: Lassen Sie mich wissen, wenn das hilft. Brent Greenwood, MS, MCITP, CBIP Bitte markieren Sie richtige Antworten und hilfreiche Beiträge brentgreenwood. blogspot Herausgegeben von Brent Greenwood Editor Donnerstag, 16. Mai 2013 14:18 Vorgeschlagen als Antwort von Elvis Long Microsoft Kontingent Mitarbeiter, Moderator Freitag, 17. Mai 2013 7:28 AM Markiert als Antwort von Elvis Long Microsoft Kontingent Mitarbeiter, Moderator Montag, Mai 27, 2013 2:58 AM Mehrere Möglichkeiten, um dieses Konzept. Hier sind ein paar für Sie. Diese beiden erfordern eine vollständig belegte Datumstabelle, getrennt von Ihrer Hauptdatentabelle (Fakten). 1. Berechnen Sie den Durchschnitt über die letzten 84 Tage (12 volle Wochen) wie folgt. Wo AvgSalesAmt ist ein einfacher Durchschnitt von SalesAmount für Ihre Transaktionen. FILTER erfasst nur die Datensätze, die sich in dem 84-Tage-Fenster ab dem MAX-Datum befinden. 2. Berechnen Sie den Durchschnitt der letzten 12 Wochen anhand einer Wochenkettennummer in Ihrer Datumstabelle. Die Sequenznummer der Woche würde bei 1 für die erste Woche in Ihrer Datumstabelle beginnen und über alle Jahre in der Tabelle fortfahren (kein Rücksetzen am Jahresende). Die Wochensequenz kann so im DAX erreicht werden. Anmerkung: es wäre effizienter, diese aus einer relationalen Datumsdimension oder in SQL zu berechnen. Egal, wenn Sie es tun müssen, in DAX, das funktioniert. Der DimDateCalendarYearWeek befindet sich im Format quotyyyyy-wwquot. Das gibt Ihnen eine Sequenz beginnend bei 1. Dann können Sie berechnen nach 12 Wochen mit diesem: Lassen Sie mich wissen, wenn das hilft. Brent Greenwood, MS, MCITP, CBIP Bitte markieren Sie richtige Antworten und hilfreiche Beiträge brentgreenwood. blogspot Herausgegeben von Brent Greenwood Editor Donnerstag, 16. Mai 2013 14:18 Vorgeschlagen als Antwort von Elvis Long Microsoft Kontingent Mitarbeiter, Moderator Freitag, 17. Mai 2013 7:28 AM Marked als Antwort von Elvis Long Microsoft Kontingent Mitarbeiter, Moderator Montag, 27. Mai 2013 02:58 AMRolling 12 Monate Durchschnitt in DAX Berechnung der rollenden 12-Monats-Durchschnitt in DAX sieht 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 die Kreuzfilterung 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