Thursday 26 January 2017

Moving Average Power Bi

Rolling 12 Monate Durchschnitt im 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 des Umsatzes 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, um die Datei frei herunterzuladen. DAX enthält einige statistische Aggregationsfunktionen wie Durchschnitt, Varianz und Standardabweichung. Andere typische statistische Berechnungen erfordern, dass Sie längere DAX-Ausdrücke schreiben. Excel, von diesem Gesichtspunkt, hat eine viel reichere Sprache. Die statistischen Muster sind eine Sammlung von gemeinsamen statistischen Berechnungen: Median, Modus, gleitenden Durchschnitt, Perzentil und Quartil. Wir danken Colin Banfield, Gerard Brückl und Javier Guilln, deren Blogs einige der folgenden Muster inspiriert haben. Grundmuster Beispiel Die Formeln in diesem Muster sind die Lösungen für spezifische statistische Berechnungen. Mit Hilfe von Standard-DAX-Funktionen kann der Mittelwert (arithmetischer Mittelwert) eines Wertsatzes berechnet werden. DURCHSCHNITT. Gibt den Durchschnitt aller Zahlen in einer numerischen Spalte zurück. AVERAGEA. Gibt den Durchschnitt aller Zahlen in einer Spalte zurück und behandelt sowohl Text als auch nicht-numerische Werte (nicht numerische und leere Textwerte zählen als 0). AVERAGEX. Berechnen Sie den Durchschnitt für einen Ausdruck, der über einer Tabelle ausgewertet wird. Moving Average Der gleitende Durchschnitt ist eine Berechnung, um Datenpunkte zu analysieren, indem eine Reihe von Mittelwerten verschiedener Teilmengen des vollständigen Datensatzes erstellt wird. Sie können viele DAX-Techniken verwenden, um diese Berechnung zu implementieren. Die einfachste Technik besteht darin, AVERAGEX zu verwenden, eine Tabelle der gewünschten Granularität zu iterieren und für jede Iteration den Ausdruck zu berechnen, der den einzelnen Datenpunkt generiert, der im Durchschnitt verwendet werden soll. Die folgende Formel berechnet beispielsweise den gleitenden Durchschnitt der letzten 7 Tage, vorausgesetzt, dass Sie eine Datumstabelle in Ihrem Datenmodell verwenden. Mit AVERAGEX berechnen Sie automatisch das Maß auf jeder Granularität. Bei der Verwendung einer Maßnahme, die aggregiert werden kann (wie z. B. SUM), kann ein anderer Ansatz, der auf CALCULATE basiert, schneller sein. Sie können diesen alternativen Ansatz in der Gesamtheit der Moving Average finden. Sie können Standard-DAX-Funktionen verwenden, um die Varianz eines Wertsatzes zu berechnen. VAR. S. Liefert die Varianz von Werten in einer Spalte, die eine Sample-Population darstellt. VAR. P. Gibt die Varianz von Werten in einer Spalte zurück, die die gesamte Population darstellt. VARX. S. Gibt die Varianz eines Ausdrucks zurück, der über eine Tabelle ausgewertet wird, die eine Sample-Population darstellt. VARX. P. Gibt die Varianz eines Ausdrucks zurück, der über eine Tabelle ausgewertet wird, die die gesamte Population repräsentiert. Standardabweichung Sie können Standard-DAX-Funktionen verwenden, um die Standardabweichung eines Wertsatzes zu berechnen. STDEV. S. Liefert die Standardabweichung von Werten in einer Spalte, die eine Stichprobenpopulation darstellt. STDEV. P. Gibt die Standardabweichung von Werten in einer die gesamte Population repräsentierenden Spalte zurück. STDEV. S. Gibt die Standardabweichung eines Ausdrucks zurück, der über eine Tabelle ausgewertet wird, die eine Probenpopulation darstellt. STDEV. P. Gibt die Standardabweichung eines Ausdrucks zurück, der über eine Tabelle ausgewertet wird, die die gesamte Population darstellt. Der Median ist der numerische Wert, der die höhere Hälfte einer Population von der unteren Hälfte trennt. Wenn es eine ungerade Anzahl von Zeilen gibt, ist der Median der Mittelwert (Sortierung der Zeilen vom niedrigsten zum höchsten Wert). Wenn es eine gerade Anzahl von Zeilen gibt, ist dies der Mittelwert der beiden mittleren Werte. Die Formel ignoriert leere Werte, die nicht als Teil der Bevölkerung betrachtet werden. Das Ergebnis ist identisch mit der MEDIAN-Funktion in Excel. Abbildung 1 zeigt einen Vergleich zwischen dem von Excel zurückgegebenen Ergebnis und der entsprechenden DAX-Formel für die mittlere Berechnung. Abbildung 1 Beispiel der Medianberechnung in Excel und DAX. Der Modus ist der Wert, der am häufigsten in einem Satz von Daten angezeigt wird. Die Formel ignoriert leere Werte, die nicht als Teil der Bevölkerung betrachtet werden. Das Ergebnis ist identisch mit den MODE - und MODE. SNGL-Funktionen in Excel, die nur den minimalen Wert zurückgeben, wenn es mehrere Modi in den betrachteten Wertsätzen gibt. Die Excel-Funktion MODE. MULT würde alle Modi zurückgeben, aber Sie können sie nicht als Maßnahme in DAX implementieren. Abbildung 2 vergleicht das Ergebnis, das von Excel mit der entsprechenden DAX-Formel für die Modusberechnung zurückgegeben wird. Abbildung 2 Beispiel für die Modusberechnung in Excel und DAX. Perzentil Das Perzentil ist der Wert, unter dem ein bestimmter Prozentsatz der Werte in einer Gruppe sinkt. Die Formel ignoriert leere Werte, die nicht als Teil der Bevölkerung betrachtet werden. Die Berechnung in DAX erfordert mehrere Schritte, die im Abschnitt Vollständiges Muster beschrieben werden und zeigt, wie die gleichen Ergebnisse der Excel-Funktionen PERCENTILE, PERCENTILE. INC und PERCENTILE. EXC zu erhalten sind. Die Quartile sind drei Punkte, die einen Satz von Werten in vier gleiche Gruppen teilen, wobei jede Gruppe ein Viertel der Daten umfasst. Sie können die Quartile mit dem Percentile-Muster nach diesen Korrespondenzen berechnen: Erstes Quartil-Unterquartil 25. Perzentil Zweites Quartil-Median 50. Perzentil Drittes Quartil-Oberquartil 75. Perzentil Komplettes Muster Einige statistische Berechnungen haben eine längere Beschreibung des gesamten Musters, da Haben Sie möglicherweise verschiedene Implementierungen abhängig von Datenmodellen und anderen Anforderungen. Gleitender Durchschnitt Normalerweise werten Sie den gleitenden Durchschnitt aus, indem Sie auf den Taggranularitätsgrad verweisen. Die allgemeine Vorlage der folgenden Formel hat diese Marker: ltnumberofdaysgt ist die Anzahl der Tage für den gleitenden Durchschnitt. Ltdatecolumngt ist die Datumspalte der Datumstabelle, wenn Sie eine oder die Datumspalte der Tabelle mit Werten haben, wenn keine separate Datumstabelle vorhanden ist. Ltmeasuregt ist die zu berechnende Größe als gleitender Durchschnitt. Das einfachste Muster verwendet die Funktion AVERAGEX in DAX, die automatisch nur die Tage berücksichtigt, für die es einen Wert gibt. Alternativ können Sie die folgende Vorlage in Datenmodellen ohne Datumstabelle und mit einer aggregierten Maßnahme (wie zB SUM) über den gesamten betrachteten Zeitraum verwenden. Die vorhergehende Formel berücksichtigt einen Tag ohne entsprechende Daten als Maß, das 0-Wert hat. Dies kann nur geschehen, wenn Sie eine separate Datumstabelle haben, die Tage enthalten kann, für die es keine entsprechenden Transaktionen gibt. Sie können den Nenner für den Durchschnitt nur über die Anzahl der Tage, für die es Transaktionen mit dem folgenden Muster gibt, festlegen: ltfacttablegt ist die Tabelle, die mit der Datumstabelle verknüpft ist und die von der Maßeinheit berechneten Werte enthält. Sie können die DATESBETWEEN - oder DATESINPERIOD-Funktionen anstelle von FILTER verwenden, aber diese arbeiten nur in einer regulären Datumstabelle, während Sie das oben beschriebene Muster auch auf nicht-reguläre Datumstabellen und auf Modelle anwenden können, die keine Datumstabelle haben. Betrachten Sie zum Beispiel die verschiedenen Ergebnisse, die durch die beiden folgenden Maßnahmen hervorgerufen werden. In Abbildung 3 sehen Sie, dass es keine Verkäufe am 11. September 2005 gibt. Allerdings ist dieses Datum in der Tabelle Datum enthalten, also gibt es 7 Tage (vom 11. September bis 17. September), die nur 6 Tage mit Daten haben. Abbildung 3 Beispiel einer gleitenden Durchschnittsberechnung unter Berücksichtigung und Ignorierung von Terminen ohne Umsatz. Die Maßnahme Moving Average 7 Tage hat eine niedrigere Zahl zwischen dem 11. September und 17. September, weil es berücksichtigt 11. September als Tag mit 0 Verkäufe. Wenn Sie Tage ohne Umsatz ignorieren möchten, dann verwenden Sie die Maßnahme Durchschnittliche 7 Tage Keine Zero. Dies könnte der richtige Ansatz sein, wenn Sie eine vollständige Datumstabelle haben, aber Sie Tage ohne Transaktionen ignorieren möchten. Mit dem Moving Average 7 Tage Formel ist das Ergebnis korrekt, da AVERAGEX automatisch nur Leerwerte berücksichtigt. Beachten Sie, dass Sie die Leistung eines gleitenden Durchschnitts verbessern können, indem Sie den Wert in einer berechneten Spalte einer Tabelle mit der gewünschten Granularität wie Datum, Datum und Produkt beibehalten. Der dynamische Berechnungsansatz mit einer Maßnahme bietet jedoch die Möglichkeit, einen Parameter für die Anzahl von Tagen des gleitenden Mittelwerts zu verwenden (z. B. ersetzen Sie die Anzahl von Tagen mit einem Maß, das das Parametertabellenmuster implementiert). Der Median entspricht dem 50. Perzentil, das Sie mit dem Perzentilmuster berechnen können. Das Medianmuster ermöglicht es Ihnen, die Medianberechnung mit einem einzigen Maßstab zu optimieren und zu vereinfachen, anstelle der verschiedenen Maßnahmen, die das Perzentilmuster erfordert. Sie können diesen Ansatz verwenden, wenn Sie den Median für die in ltvaluecolumngt enthaltenen Werte berechnen, wie unten gezeigt: Um die Leistung zu verbessern, möchten Sie möglicherweise den Wert einer Kennzahl in einer berechneten Spalte beibehalten, wenn Sie den Median für die Ergebnisse von erhalten möchten Eine Maßnahme im Datenmodell. Bevor Sie diese Optimierung durchführen, sollten Sie die MedianX-Berechnung anhand der folgenden Vorlage mit diesen Markern implementieren: ltgranularitytablegt ist die Tabelle, die die Granularität der Berechnung definiert. Beispielsweise könnte es sich um die Datumstabelle handeln, wenn Sie den Mittelwert einer auf Tagesebene berechneten Maßnahme berechnen wollen, oder es könnte VALUES (8216DateYearMonth) sein, wenn Sie den Median einer auf der Monatsstufe berechneten Maßeinheit berechnen möchten. Ltmeasuregt ist das Maß für die Berechnung für jede Zeile der ltgranularitytablegt für die mittlere Berechnung. Ltmeasuretablegt ist die Tabelle, die die von ltmeasuregt verwendeten Daten enthält. Wenn z. B. das ltgranularitytablegt eine Dimension wie 8216Date8217 ist, wird das ltmeasuretablegt 8216Internet Sales8217 sein, das die Internet Sales Amount-Spalte enthält, die durch das Internet-Gesamtumsatzmaß summiert wird. Beispielsweise können Sie den Median des Gesamtverkaufs für alle Kunden in Adventure Works wie folgt schreiben: Tip Das folgende Muster: wird verwendet, um Zeilen aus ltgranularitytablegt zu entfernen, die keine entsprechenden Daten in der aktuellen Auswahl haben. Es ist ein schnellerer Weg, als den folgenden Ausdruck zu verwenden: Sie können jedoch den gesamten CALCULATETABLE-Ausdruck durch nur ltgranularitytablegt ersetzen, wenn Sie leere Werte des ltmeasuregt als 0 betrachten möchten. Die Performance der MedianX-Formel hängt von der Anzahl der Zeilen in der Tabelle ab Und die Komplexität der Maßnahme. Wenn die Leistung schlecht ist, können Sie das ltmeasuregt-Ergebnis in einer berechneten Spalte des lttablegt fortbestehen, aber dies wird die Fähigkeit des Anwendens von Filtern auf die mittlere Berechnung bei der Abfragezeit beeinträchtigen. Perzentile Excel hat zwei verschiedene Implementierungen der Perzentilberechnung mit drei Funktionen: PERCENTILE, PERCENTILE. INC und PERCENTILE. EXC. Sie geben alle das K-te Perzentil der Werte zurück, wobei K im Bereich von 0 bis 1 liegt. Der Unterschied besteht darin, daß PERCENTILE und PERCENTILE. INC K als einen Inklusionsbereich betrachten, während PERCENTILE. EXC den K-Bereich 0 bis 1 als exklusiv betrachtet . Alle diese Funktionen und ihre DAX-Implementierungen erhalten einen Perzentilwert als Parameter, den wir K. ltKgt-Perzentilwert im Bereich von 0 bis 1 nennen. Die beiden DAX-Implementierungen von Perzentil erfordern ein paar ähnliche Maßnahmen, die aber unterschiedlich genug sind Zwei verschiedene Satz von Formeln. Die in jedem Muster definierten Maßnahmen sind: KPerc. Der Perzentilwert entspricht ltKgt. PercPos. Die Position des Perzentils in dem sortierten Satz von Werten. ValueLow. Der Wert unterhalb der Perzentilposition. WertHigh. Der Wert über der Perzentilstellung. Perzentil. Die endgültige Berechnung des Perzentils. Sie benötigen die ValueLow - und ValueHigh-Maßnahmen, falls das PercPos einen Dezimalteil enthält, da Sie dann zwischen ValueLow und ValueHigh interpolieren müssen, um den richtigen Perzentilwert zurückzugeben. Fig. 4 zeigt ein Beispiel der Berechnungen, die mit Excel - und DAX-Formeln durchgeführt werden, wobei beide Algorithmen von Perzentil (inklusive und exklusiv) verwendet werden. Abbildung 4 Perzentilberechnungen mit Excel-Formeln und der äquivalenten DAX-Berechnung. In den folgenden Abschnitten führen die Percentile-Formeln die Berechnung von Werten aus, die in einer Tabellenspalte DataValue gespeichert sind, während die PercentileX-Formeln die Berechnung auf Werte ausführen, die durch eine bei einer gegebenen Granularität berechnete Kennzahl zurückgegeben werden. Percentile Inclusive Die Percentile Inclusive-Implementierung ist die folgende. Percentile Exclusive Die Percentile Exclusive-Implementierung ist die folgende. PercentileX Inclusive Die PercentileX Inclusive-Implementierung basiert auf folgender Vorlage: ltgranularitytablegt ist die Tabelle, die die Granularität der Berechnung definiert. Beispielsweise könnte es sich um die Datumstabelle handeln, wenn Sie das Perzentil einer Kennzahl auf Tagesebene berechnen möchten, oder es könnte VALUES (8216DateYearMonth) sein, wenn Sie das Perzentil einer Kennzahl auf der Monatsstufe berechnen möchten. Ltmeasuregt ist das Maß für die Berechnung für jede Zeile von ltgranularitytablegt für die Perzentilberechnung. Ltmeasuretablegt ist die Tabelle, die die von ltmeasuregt verwendeten Daten enthält. Wenn zum Beispiel das ltgranularitytablegt eine Dimension wie 8216Date, 8217 ist, dann ist das ltmeasuretablegt 8216Sales8217, das die Summenspalte enthält, die durch das Gesamtbetragsmaß summiert wird. Beispielsweise können Sie den PercentileXInc des Gesamtbetrags der Verkäufe für alle Daten in der Datumstabelle wie folgt schreiben: PercentileX Exclusive Die PercentileX Exclusive-Implementierung basiert auf der folgenden Vorlage, wobei dieselben Markierungen in PercentileX Inclusive verwendet werden: Zum Beispiel Sie Kann die PercentileXExc des Gesamtbetrags der Verkäufe für alle Daten in der Datumstabelle wie folgt schreiben: Halten Sie mich informiert über bevorstehende Muster (Newsletter). Deaktivieren Sie die Datei frei herunterladen. Veröffentlicht am 17. März 2014 von


No comments:

Post a Comment