Tuesday, 6 June 2017

Powerpivot Beweglich Durchschnittlich Dax


DAX enthält einige statistische Aggregationsfunktionen wie Mittelwert, Varianz und Standardabweichung. Andere typische statistische Berechnungen verlangen, dass Sie längere DAX-Ausdrücke schreiben. Excel hat aus dieser Sicht eine viel reichere Sprache. Die statistischen Muster sind eine Sammlung von gemeinsamen statistischen Berechnungen: Median, Modus, gleitender Durchschnitt, Perzentil und Quartil. Wir danken Colin Banfield, Gerard Brückl und Javier Guilln, dessen Blogs einige der folgenden Muster inspirierten. Grundmuster Beispiel Die Formeln in diesem Muster sind die Lösungen für spezifische statistische Berechnungen. Sie können Standard-DAX-Funktionen verwenden, um den Mittelwert (arithmetischen Mittelwert) eines Satzes von Werten zu berechnen. 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 auf einem 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 umzusetzen. Die einfachste Technik ist die Verwendung von AVERAGEX, die eine Tabelle der gewünschten Granularität iteriert und für jede Iteration den Ausdruck berechnet, der den einzelnen Datenpunkt erzeugt, der im Durchschnitt verwendet wird. Beispielsweise berechnet die folgende Formel den gleitenden Durchschnitt der letzten 7 Tage, vorausgesetzt, dass Sie eine Datumstabelle in Ihrem Datenmodell verwenden. Mit AVERAGEX berechnen Sie automatisch die Maßnahme auf jeder Granularitätsebene. Bei der Verwendung einer Maßnahme, die aggregiert werden kann (wie zB SUM), dann könnte ein anderer Ansatz, der auf CALCULATE basiert, schneller sein. Sie finden diesen alternativen Ansatz in der vollständigen Muster von Moving Average. Sie können Standard-DAX-Funktionen verwenden, um die Varianz eines Satzes von Werten zu berechnen. VAR. S. Gibt die Varianz der Werte in einer Spalte zurück, die eine Stichprobenpopulation repräsentiert. VAR. P. Gibt die Varianz der Werte in einer Spalte zurück, die die gesamte Population repräsentiert. VARX. S. Gibt die Varianz eines Ausdrucks zurück, der über eine Tabelle ausgewertet wird, die eine Stichprobenpopulation repräsentiert. 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 Satzes von Werten zu berechnen. STDEV. S. Gibt die Standardabweichung von Werten in einer Spalte zurück, die eine Stichprobenpopulation repräsentiert. STDEV. P. Gibt die Standardabweichung von Werten in einer Spalte zurück, die die gesamte Population repräsentiert. STDEVX. S. Gibt die Standardabweichung eines Ausdrucks zurück, der über eine Tabelle ausgewertet wird, die eine Stichprobenpopulation repräsentiert. STDEVX. P. Gibt die Standardabweichung eines Ausdrucks zurück, der über eine Tabelle ausgewertet wird, die die gesamte Population repräsentiert. Der Median ist der Zahlenwert, 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 Wert zum höchsten Wert). Wenn es eine gerade Anzahl von Zeilen gibt, ist es der Durchschnitt der beiden Mittelwerte. 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 Medianberechnung. Abbildung 1 Beispiel für die mediane Berechnung in Excel und DAX. Der Modus ist der Wert, der am häufigsten in einem Satz von Daten erscheint. Die Formel ignoriert leere Werte, die nicht als Teil der Bevölkerung betrachtet werden. Das Ergebnis ist identisch mit den Funktionen MODE und MODE. SNGL in Excel, die nur den Minimalwert zurückgeben, wenn es mehrere Modi in der Menge der betrachteten Werte gibt. Die Excel-Funktion MODE. MULT würde alle Modi zurückgeben, aber man kann sie nicht als Maß im DAX implementieren. Abbildung 2 vergleicht das von Excel zurückgegebene Ergebnis mit der entsprechenden DAX-Formel für die Modusberechnung. Abbildung 2 Beispiel der Modusberechnung in Excel und DAX. Percentile Das Perzentil ist der Wert, unter dem ein bestimmter Prozentsatz der Werte in einer Gruppe fällt. Die Formel ignoriert leere Werte, die nicht als Teil der Bevölkerung betrachtet werden. Die Berechnung im DAX erfordert mehrere Schritte, die im Abschnitt "Vollständige Muster" beschrieben sind, in dem gezeigt wird, wie die gleichen Ergebnisse der Excel-Funktionen PERCENTILE, PERCENTILE. INC und PERCENTILE. EXC erhalten werden. Die Quartile sind drei Punkte, die einen Satz von Werten in vier gleiche Gruppen aufteilen, wobei jede Gruppe ein Viertel der Daten umfasst. Sie können die Quartile mit dem Percentile-Muster nach diesen Korrespondenzen berechnen: Erster Quartil-Unterquartil 25. Perzentil Zweiter Quartil-Median 50. Perzentil Dritter Quartil-Oberquartil 75. Perzentil Komplettes Muster Ein paar statistische Berechnungen haben eine längere Beschreibung des vollständigen Musters, weil Vielleicht haben Sie je nach Datenmodell und anderen Anforderungen unterschiedliche Implementierungen. Moving Average Normalerweise beurteilen Sie den gleitenden Durchschnitt, indem Sie auf den Tag Granularitätsniveau verweisen. Die allgemeine Vorlage der folgenden Formel hat diese Markierungen: ltnumberofdaysgt ist die Anzahl der Tage für den gleitenden Durchschnitt. Ltdatecolumngt ist die Datumssäule der Datumstabelle, wenn Sie eine oder die Datumssäule der Tabelle enthalten, die Werte enthält, wenn es keine separate Datumstabelle gibt. Ltmeasuregt ist die Maßnahme, um den gleitenden Durchschnitt zu berechnen. Das einfachste Muster nutzt die AVERAGEX-Funktion im 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 Maßnahme, die aggregiert werden kann (zB SUM), über den gesamten betrachteten Zeitraum verwenden. Die vorherige Formel betrachtet einen Tag ohne entsprechende Daten als Maß, der 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 mit der Anzahl der Tage festlegen, für die es Transaktionen gibt, die das folgende Muster verwenden, wobei: ltfacttablegt die Tabelle ist, die sich auf die Datumstabelle bezieht und die von der Maßnahme berechneten Werte enthält. Sie können die DATESBETWEEN - oder DATESINPERIOD-Funktionen anstelle von FILTER verwenden, aber diese funktionieren nur in einer regulären Datumstabelle, während Sie das oben beschriebene Muster auch auf nicht reguläre Datumstabellen und auf Modelle mit einer Datumstabelle anwenden können. Betrachten wir zum Beispiel die verschiedenen Ergebnisse, die durch die beiden folgenden Maßnahmen hervorgerufen wurden. In Abbildung 3 können Sie sehen, dass es keine Verkäufe am 11. September 2005 gibt. Dieses Datum ist jedoch in der Date-Tabelle enthalten. Es gibt also 7 Tage (vom 11. September bis 17. September), die nur 6 Tage mit Daten haben. Abbildung 3 Beispiel für eine gleitende durchschnittliche Berechnung unter Berücksichtigung und ignorierte Daten ohne Umsatz. Die Maßnahme Moving Average 7 Tage hat eine niedrigere Zahl zwischen 11. September und 17. September, weil es den 11. September als Tag mit 0 Verkäufen berücksichtigt. Wenn du Tage ohne Verkauf ignorieren möchtest, dann benutze die Maßnahme Moving Average 7 Days No Zero. Dies könnte der richtige Ansatz sein, wenn Sie eine komplette Datumstabelle haben, aber Sie möchten Tage ohne Transaktionen ignorieren. Mit der Moving Average 7 Days Formel ist das Ergebnis korrekt, da AVERAGEX automatisch nur nicht leere Werte berücksichtigt. Denken Sie daran, dass Sie die Leistung eines gleitenden Durchschnitts verbessern könnten, indem Sie den Wert in einer berechneten Spalte einer Tabelle mit der gewünschten Granularität wie Datum oder Datum und Produkt beibehalten. Der dynamische Berechnungsansatz mit einer Maßnahme bietet jedoch die Möglichkeit, einen Parameter für die Anzahl der Tage des gleitenden Durchschnitts zu verwenden (z. B. ersetzen ltnumberofdaysgt mit einer Maßnahme, die das Parameter-Tabellenmuster implementiert). Der Median entspricht dem 50. Perzentil, das man mit dem Percentile-Muster berechnen kann. Das mediane Muster erlaubt es Ihnen jedoch, die Medianberechnung mit einer einzigen Maßnahme zu optimieren und zu vereinfachen, anstatt der verschiedenen Maßnahmen, die das Percentile-Muster benötigt. Sie können diesen Ansatz verwenden, wenn Sie den Median für Werte berechnen, die in ltvaluecolumngt enthalten sind, wie unten gezeigt: Um die Leistung zu verbessern, möchten Sie vielleicht den Wert einer Maßnahme in einer berechneten Spalte beibehalten, wenn Sie den Median für die Ergebnisse erhalten möchten Eine Maßnahme im Datenmodell. Bevor Sie diese Optimierung durchführen, sollten Sie die MedianX-Berechnung auf der Grundlage der folgenden Vorlage implementieren, indem Sie diese Markierungen verwenden: ltgranularitytablegt ist die Tabelle, die die Granularität der Berechnung definiert. Zum Beispiel könnte es die Date-Tabelle sein, wenn man den Median einer auf dem Tagesniveau berechneten Maßnahme berechnen möchte, oder es könnte VALUES (8216DateYearMonth) sein, wenn man den Median einer auf dem Monatsniveau berechneten Maßnahme berechnen möchte. Ltmeasuregt ist die Maßnahme, um für jede Zeile von ltrancityitytablegt für die Medianberechnung zu berechnen. Ltmeasuretablegt ist die Tabelle mit Daten, die von ltmeasuregt verwendet werden. Zum Beispiel, wenn das ltgranularitytablegt eine Dimension wie 8216Date8217 ist, dann wird das ltmeasuretablegt 8216Internet Sales8217 mit der Internet-Verkaufsmenge Spalte summiert durch die Internet Total Sales Maßnahme. Zum Beispiel können Sie den Median des Internet Total Sales für alle Kunden in Adventure Works wie folgt schreiben: Tipp 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 die Verwendung des folgenden Ausdrucks: Allerdings können Sie den gesamten CALCULATETABLE Ausdruck mit nur ltgranularitytablegt ersetzen, wenn Sie leere Werte des ltmeasuregt als 0 betrachten möchten. Die Leistung der MedianX Formel hängt von der Anzahl der Zeilen in der Tisch iteriert und auf die Komplexität der Maßnahme. Wenn die Leistung schlecht ist, können Sie das ltmeasuregt-Ergebnis in einer berechneten Spalte des lttablegt bestehen, aber dies wird die Fähigkeit entfernen, Filter auf die Medianberechnung zur Abfragezeit anzuwenden. Percentile Excel hat zwei verschiedene Implementierungen der Perzentilberechnung mit drei Funktionen: PERCENTILE, PERCENTILE. INC und PERCENTILE. EXC. Sie alle kehren das K-te Perzentil der Werte zurück, wobei K im Bereich 0 bis 1 liegt. Der Unterschied ist, dass PERCENTILE und PERCENTILE. INC K als Inklusivbereich 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 0 bis 1 nennen. Die beiden DAX-Implementierungen von Perzentil erfordern ein paar Maßnahmen, die ähnlich, aber unterschiedlich genug sind Zwei verschiedene Formeln. Die in jedem Muster definierten Maßnahmen sind: KPerc. Der Perzentilwert entspricht ltKgt. PercPos Die Position des Perzentils im sortierten Satz von Werten. ValueLow Der Wert unterhalb der Perzentilposition. ValueHigh. Der Wert über der Perzentilposition. Percentile Die endgültige Berechnung des Perzentils. Sie benötigen die ValueLow - und ValueHigh-Maßnahmen, falls der PercPos einen Dezimalteil enthält, denn dann müssen Sie zwischen ValueLow und ValueHigh interpolieren, um den korrekten Perzentilwert zurückzugeben. Abbildung 4 zeigt ein Beispiel für die Berechnungen, die mit Excel - und DAX-Formeln erstellt wurden, wobei beide Algorithmen von Perzentil (einschließlich und exklusiv) verwendet werden. Abbildung 4 Perzentile Berechnungen mit Excel-Formeln und der entsprechenden DAX-Berechnung. In den folgenden Abschnitten führen die Percentile-Formeln die Berechnung auf Werte aus, die in einer Tabellenspalte DataValue gespeichert sind, während die PercentileX-Formeln die Berechnung auf Werte ausführen, die von einer bei einer gegebenen Granularität berechneten Größe 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 der folgenden Vorlage, wobei diese Marker verwendet werden: ltgranularitytablegt ist die Tabelle, die die Granularität der Berechnung definiert. Zum Beispiel könnte es die Datumstabelle sein, wenn Sie das Perzentil einer Maßnahme am Tagestag berechnen möchten, oder es könnte VALUES (8216DateYearMonth) sein, wenn Sie das Perzentil einer Maßnahme auf der Monatsstufe berechnen möchten. Ltmeasuregt ist die Maßnahme, um für jede Zeile von ltrancityitytablegt für die Perzentilberechnung zu berechnen. Ltmeasuretablegt ist die Tabelle mit Daten, die von ltmeasuregt verwendet werden. Wenn zum Beispiel die ltgranularitytablegt eine Dimension wie 8216Date, 8217 ist, dann wird das ltmeasuretablegt 8216Sales8217 sein, das die Summenspalte enthält, die durch das Gesamtmengenmaß summiert wird. Beispielsweise können Sie den PercentileXInc des Gesamtbetrags der Verkäufe für alle Termine in der Datentabelle wie folgt schreiben: PercentileX Exclusive Die PercentileX Exclusive Implementierung basiert auf der folgenden Vorlage und verwendet dieselben Marker, die in PercentileX Inclusive verwendet werden Kann die PercentileXExc des Gesamtbetrags der Verkäufe für alle Termine in der Datumstabelle wie folgt schreiben: Halten Sie mich über die bevorstehenden Muster (Newsletter) informiert. Deaktivieren Sie, um die Datei frei herunterzuladen. Veröffentlicht am 17. März 2014 vonRolling 12 Monate Durchschnitt in DAX Computing der rollende 12-Monats-Durchschnitt in DAX sieht aus wie eine einfache Aufgabe, aber es verbirgt einige Komplexität. Dieser Artikel erklärt, wie man die beste Formel, die gemeinsame Fallstricke mit Zeit Intelligenz Funktionen zu vermeiden. Wir beginnen mit dem üblichen AdventureWorks Datenmodell, mit Produkten, Verkauf und Kalender Tisch. Der Kalender wurde als Kalendertabelle markiert (es ist notwendig, mit jeder Zeit Intelligenz-Funktion zu arbeiten) und wir bauten eine einfache Hierarchie Jahr-Monat-Datum. Mit diesem Setup ist es sehr einfach, eine erste PivotTable zu erstellen, die den Verkauf im Laufe der Zeit zeigt: Wenn Sie Trendanalyse durchführen, wenn der Verkauf der Saisonalität entspricht oder allgemeiner, wenn Sie den Effekt von Peaks und Tropfen im Verkauf entfernen möchten, Gemeinsame Technik ist die Berechnung der Wert über einen bestimmten Zeitraum, in der Regel 12 Monate, und durchschnittlich es. Der rollende Durchschnitt über 12 Monate bietet einen reibungslosen Indikator für den Trend und ist in Charts sehr nützlich. Angesichts eines Datums können wir den 12-monatigen rollenden 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 des Umsatzes nach dem Erstellen eines Filters auf dem Kalender, der Zeigt genau ein ganzes Jahr der Daten. Der Kern der Formel ist die DATESBETWEEN, die einen inklusiven Satz von Daten zwischen den beiden Grenzen zurückgibt. Die untere ist: Lesen Sie es von der innersten: Wenn wir Daten für einen Monat zeigen, sagen wir Juli 2007, nehmen wir das letzte sichtbare Datum mit LASTDATE, die den letzten Tag im Juli 2007 zurückgibt. Dann verwenden wir NEXTDAY, um die 1. zu nehmen Von August 2007 und wir verwenden endlich SAMEPERIODLASTYEAR, um es ein Jahr zurückzusetzen, was den 1. August 2006 ergibt. 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 Abbildung sehen können, wird der Wert korrekt bis 2008 berechnet. Dann gibt es keinen Wert im Jahr 2009 (das ist richtig, wir haben keinen Umsatz im Jahr 2009), aber es gibt Ein überraschender Wert im Dezember 2010, wo unsere Formel die Gesamtsumme anstelle eines Blindwertes zeigt, wie wir erwarten würden. In der Tat, am Dezember, kommt LASTDATE den letzten Tag des Jahres und NEXTDAY sollte den 1. Januar 2011 zurückgeben. 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 lohnt sich ein paar Worte mehr. Zeit-Intelligenz-Funktionen führen keine Mathematik auf Daten. Wenn du den Tag nach einem bestimmten Datum nehmen möchtest, kannst du einfach 1 zu jeder Datumsspalte hinzufügen und das Ergebnis wird am nächsten Tag sein. Stattdessen verschieben Zeit-Intelligenz-Funktionen Sätze von Datum hin und her über die Zeit. So nimmt NEXTDAY seinen Eingang (in unserem Fall eine einreihige Tabelle mit dem 31. Dezember 2010) und verschiebt ihn einen Tag später. Das Problem ist, dass das Ergebnis der 1. Januar 2011 sein sollte, aber da die Kalender-Tabelle dieses Datum nicht enthält, ist das Ergebnis BLANK. So berechtigt unser Ausdruck den Verkauf mit einer leeren unteren Grenze, was den Beginn der Zeit bedeutet, was die Gesamtsumme des Umsatzes ergibt. Um die Formel zu korrigieren, genügt es, die Auswertungsreihenfolge der unteren Grenze zu ändern: Wie Sie sehen können, wird jetzt NEXTDAY nach der Verschiebung von einem Jahr zurückgerufen. Auf diese Weise nehmen wir den 31. Dezember 2010, verschieben ihn bis zum 31. Dezember 2009 und nehmen den nächsten Tag, der 1. Januar 2010 ist: ein bestehendes Datum in der Kalendertabelle. Das Ergebnis ist jetzt das erwartete: An diesem Punkt müssen wir nur diese Zahl um 12 teilen, um den rollenden Durchschnitt zu erhalten. Aber, wie Sie sich leicht vorstellen können, können wir es nicht immer durch 12 teilen. In der Tat, zu Beginn der Periode gibt es nicht 12 Monate zu aggregieren, aber eine niedrigere Zahl. Wir müssen die Anzahl der Monate berechnen, für die es Verkäufe gibt. Dies kann durch die Querfiltration der Kalendertabelle mit der Verkaufstabelle erreicht werden, nachdem wir den neuen 12 Monate Kontext angewendet haben. Wir definieren eine neue Maßnahme, die die Anzahl der bestehenden Monate in der 12-Monats-Periode berechnet: Sie können in der nächsten Abbildung sehen, dass die Months12M-Maßnahme 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, der Cross-Filter verwendet, ist die Tatsache, dass es die Anzahl der verfügbaren Monate berechnet, auch wenn Sie mit anderen filtern Attribute. Wenn Sie zum Beispiel die blaue Farbe mit einem Slicer auswählen, dann beginnt der Verkauf im Juli 2007 (nicht im Jahr 2005, wie es für viele andere Farben passiert). Mit dem Cross-Filter auf Sales, die Formel richtig berechnet, dass im Juli 2007 gibt es einen einzigen Monat verfügbaren Verkäufe für Blue: An diesem Punkt ist der rollende Durchschnitt nur ein DIVIDE entfernt: Wenn wir es in einer Pivot-Tabelle verwenden, haben wir noch Haben eine kleine Frage: In der Tat 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 zeigt, wenn es keine Verkäufe gibt. Ich habe nichts gegen IF, aber für die Leistung-süchtig unter euch, ist es immer daran zu erinnern, dass IF könnte ein Performance-Killer sein, weil es könnte DAX-Formel-Engine zu treten. In diesem speziellen Fall ist der Unterschied vernachlässigbar, aber , In der Regel die beste Weg, um den Wert zu entfernen, wenn es keine Verkäufe ist, um auf reine Speicher-Engine-Formeln wie diese zu verlassen: Vergleich eines Diagramms mit dem Avg12M mit einem anderen, der Verkäufe zeigt, können Sie leicht zu schätzen, wie der rollende Durchschnitt Umreißt Trends in einer viel saubereren Weise: Halten Sie mich über die kommenden Artikel (Newsletter) informiert. Deaktivieren Sie, um die Datei frei herunterzuladen. SQL Server Denali PowerPivot Alberto Ferrari schrieb bereits über die Berechnung der Bewegungsdurchschnitte in DAX mit einer berechneten Spalte. I8217d möchte hier einen anderen Ansatz vorstellen, indem wir eine berechnete Maßnahme verwenden. Für den gleitenden Durchschnitt I8217m berechnen einen täglichen gleitenden Durchschnitt (in den letzten 30 Tagen) hier. Für mein Beispiel, I8217m mit der PowerPivot-Arbeitsmappe, die als Teil der SSAS tabellarischen Modellprojekte aus dem Denali CTP 3 Samples heruntergeladen werden kann. In diesem Beitrag, I8217m die Entwicklung der Formel Schritt für Schritt. Allerdings, wenn Sie in Eile sind, können Sie direkt zu den endgültigen Ergebnissen unten zu springen. Mit dem Kalenderjahr 2003 auf dem Filter, dem Datum auf Spalten und dem Verkaufsbetrag (aus Tabelle Internet Sales) in den Details sehen die Beispieldaten wie folgt aus: In jedem row8217s Kontext gibt der Ausdruck DateDate den aktuellen Kontext, dh das Datum für diese Zeile . Aber aus einer berechneten Maßnahme können wir nicht auf diesen Ausdruck verweisen (da es keine aktuelle Zeile für die Date-Tabelle gibt), stattdessen müssen wir einen Ausdruck wie LastDate (DateDate) verwenden. Also, um die letzten dreißig Tage zu bekommen, können wir diesen Ausdruck nutzen. Wir können nun unsere Internet-Verkäufe für jeden dieser Tage mit der zusammenfassenden Funktion zusammenfassen: Zusammenfassen (160 DatesInPeriod (DateDate, LastDate (DateDate), - 30, DAY) 160, DateDate 160. quotSalesAmountSumquot 160. Summe (Internet SalesSales Betrag)) Und schließlich, mit der DAX-Funktion AverageX, um den Durchschnitt dieser 30 Werte zu berechnen: Verkaufsbetrag (30d avg): AverageX (160 Zusammenfassen (160160160 DatesInPeriod (DateDate, LastDate (DateDate), - 30, DAY) 160160160, DateDate 160160160. quotSalesAmountSumquot 160160160. Summe (Internet SalesSales Betrag) 160) 160, SalesAmountSum) Dies ist die Berechnung, die wir in unserer Internet Sales Tabelle verwenden, wie im Screenshot unten gezeigt: Wenn man diese Berechnung der Pivot-Tabelle von oben addiert, sieht das Ergebnis so aus: Wenn man das Ergebnis betrachtet, scheint es, dass wir vor dem 1. Januar 2003 keine Daten haben: Der erste Wert für den gleitenden Durchschnitt ist identisch mit dem Tageswert ( Es gibt keine Zeilen vor diesem Datum). Der zweite Wert für den gleitenden Durchschnitt ist eigentlich der Durchschnitt der ersten beiden Tage und so weiter. Das ist nicht ganz richtig, aber ich bin in einer Sekunde auf dieses Problem zurückgekehrt. Der Screenshot zeigt die Berechnung für den gleitenden Durchschnitt am 31. Januar als Durchschnitt der Tageswerte vom 2. bis 31. Januar. Unsere berechnete Maßnahme funktioniert auch bei der Anwendung von Filtern. Im folgenden Screenshot habe ich zwei Produktkategorien für die Datenreihe verwendet: Wie funktioniert unsere berechnete Maßnahme auf höhere Aggregationsebenen Um herauszufinden, I8217m mit der Kalenderhierarchie in den Zeilen (anstelle des Datums). Zur Vereinfachung habe ich die Semester - und Viertelstufen mit Excel8217s Pivot-Tabellenoptionen (ShowHide Felder Option) entfernt. Wie Sie sehen können, funktioniert die Berechnung noch gut. Hier ist das monatliche Aggregat der gleitende Durchschnitt für den letzten Tag des jeweiligen Monats. Sie sehen das deutlich für Januar (Wert von 14.215.01 erscheint auch im Screenshot oben als Wert für 31. Januar). Wenn dies die geschäftliche Anforderung (die für einen Tagesdurchschnitt klingt) klingt, dann funktioniert die Aggregation auf einer monatlichen Ebene gut (sonst müssen wir unsere Berechnung fein abgestimmt haben und das wird ein Thema der kommenden Post sein). Aber obwohl die Aggregation auf einer monatlichen Ebene sinnvoll ist, wenn wir diese Ansicht auf die Tagesniveau erweitern, sehen Sie, dass unsere berechnete Maßnahme einfach den Verkaufsbetrag für diesen Tag zurückgibt, nicht den Durchschnitt der letzten 30 Tage mehr: Wie kann das sein. Das Problem ergibt sich aus dem Kontext, in dem wir unsere Summe berechnen, wie im folgenden Code hervorgehoben: Verkaufsbetrag (30d avg): AverageX (160 Zusammenfassende (160160160 dateinperiod (DateDate, LastDate (DateDate), - 30, DAY) 160160160, DateDate 160160160. quotSalesAmountSumquot 160160160. Summe (Internet SalesSales Betrag) 160) 160, SalesAmountSum) Da wir diesen Ausdruck über den angegebenen Zeitraum auswerten, ist der einzige Kontext, der hier überschrieben wird, DateDate. In unserer Hierarchie verwenden wir verschiedene Attribute aus unserer Dimension (Kalenderjahr, Monat und Tag des Monats). Da dieser Kontext noch vorhanden ist, wird die Berechnung auch durch diese Attribute gefiltert. Und das erklärt, warum wir den aktuellen day8217s Kontext noch für jede Zeile vorhanden sind. Um die Dinge klar zu machen, solange wir diesen Ausdruck außerhalb eines Datumskontexts auswerten, ist alles in Ordnung, da die folgende DAX-Abfrage bei der Ausführung von Management Studio im Internet Sales-Perspektive unseres Modells (unter Verwendung der tabellarischen Datenbank mit denselben Daten) angezeigt wird ): Auswertung (160160160160160160160160160160160160160160160. Summe (Internet SalesSales Betrag) 160160160)) Hier habe ich den Zeitraum reduziert. (160160160160160160160160160.dieAngebotSumquot 160160160160160160160.) Bis 5 Tage und auch ein festes Datum als LastDate (8230) würde dazu führen, dass das letzte Datum meiner Datum Dimensionstabelle, für die keine Daten in den Beispieldaten vorhanden sind. Hier ist das Ergebnis aus der Abfrage: Nach dem Einfügen eines Filters auf 2003 werden jedoch keine Datenzeilen außerhalb von 2003 in die Summe einbezogen. Dies erklärt die obige Bemerkung: Es sah so aus, als hätten wir nur ab dem 1. Januar 2003 Daten. Und jetzt wissen wir warum: Das Jahr 2003 war auf dem Filter (wie man in der ersten Screenshots dieses Beitrags sehen kann) und Daher war es bei der Berechnung der Summe vorhanden. Nun ist alles, was wir tun müssen, um diese zusätzlichen Filter loszuwerden, weil wir unsere Ergebnisse bereits nach Datum filtern. Der einfachste Weg, dies zu tun, ist, die Berechnungsfunktion zu verwenden und ALLE (8230) für alle Attribute anzuwenden, für die wir den Filter entfernen wollen. Da wir einige dieser Attribute (Jahr, Monat, Tag, Wochentag, 8230) haben und wir den Filter von allen, aber das Datumsattribut entfernen wollen, ist die Verknüpfungsfunktion ALLEXCEPT hier sehr nützlich. Wenn du einen MDX-Hintergrund hast, wirst du dich fragen, warum wir bei der Verwendung von SSAS im OLAP-Modus (BISM Multidimensional) kein ähnliches Problem haben. Der Grund dafür ist, dass unsere OLAP-Datenbank Attributbeziehungen hat, also nach dem Festlegen des Datums (Key) Attributs werden die anderen Attribute auch automatisch geändert und wir müssen uns darum kümmern (siehe meinen Beitrag hier). Aber im tabellarischen Modell haben wir keine Attributbeziehungen (nicht einmal ein wahres Schlüsselattribut) und deshalb müssen wir unerwünschte Filter aus unseren Berechnungen eliminieren. Also hier sind wir mit dem 8230 Verkaufsbetrag (30d avg): AverageX (160 Summarize (160160160 dateinperiod (DateDate, LastDate (DateDate), - 30, DAY) 160160160, DateDate 160160160. quotSalesAmountSumquot 160160160. berechnen (Summe (Internet SalesSales Betrag) , ALLEXCEPT (Date, DateDate)) 160), SalesAmountSum) Und das ist unsere letzte Pivot-Tabelle in Excel: Um den gleitenden Durchschnitt zu veranschaulichen, ist hier der gleiche Datenextrakt in einer Chartansicht (Excel): Obwohl wir unsere Daten gefiltert haben 2003 nimmt der gleitende Durchschnitt für die ersten 29 Tage des Jahres 2003 korrekt die entsprechenden Tage des Jahres 2002 in Betracht. Sie erkennen die Werte für den 30. und 31. Januar von unserem ersten Ansatz, da dies die ersten Tage waren, für die unsere erste Berechnung eine ausreichende Datenmenge (volle 30 Tage) hatte.

No comments:

Post a Comment