Metriken Maven: Berechnen eines Moving Average in PostgreSQL In unserer Metrics Maven-Serie, Composes Daten-Wissenschaftler Aktien-Datenbank-Funktionen, Tipps, Tricks und Code können Sie verwenden, um die Metriken, die Sie aus Ihren Daten benötigen. Lesen Sie in diesem Artikel, wie Sie einen gleitenden Durchschnitt in PostgreSQL berechnen. Dieser Artikel basiert auf unseren beiden letzten Artikeln über Fensterfunktionen und Fensterrahmen in PostgreSQL. Nun nutzen Sie die Fenster-Funktionen weve zuvor diskutiert, um einen gleitenden Durchschnitt zu berechnen und auch auf eine alternative Methode. Was ist ein gleitender Durchschnitt Ein gleitender Durchschnitt ist genau das, was es klingt wie - ein Durchschnitt, der ständig auf der Grundlage der sich ändernden Eingabe bewegt. Beispielsweise möchten Sie vielleicht den Durchschnitt von einem Wert für die Top 100 Einträge oder für die letzten 30 Tage zu nehmen. Da Sie neue Einträge in Ihre Datenbank erhalten oder weil jeder neue Tag ein anderes Datum ist, ändert sich der Durchschnitt. Der Begriff gleitenden Durchschnitt ist auch gleichbedeutend mit rollenden durchschnittlichen oder laufenden Durchschnitt, aber es gibt ein paar verschiedene Arten von gleitenden Durchschnitten. In diesem Artikel wurden auf den einfachen gleitenden Durchschnitt konzentrieren, um unsere Füße nass und gut auch kurz den kumulativen gleitenden Durchschnitt am Ende des Artikels. Ein zukünftiger Artikel deckt gewichtete und exponentielle gleitende Durchschnitte. Der Grund, einen gleitenden Durchschnitt für Ihre Metriken zu verwenden, besteht darin, die Erfassung von Trends zu erleichtern. Es ist eine häufig verwendete Technik in der Finanz-und Business-Analytik zu glätten Dips und Spikes, die in den Daten auftreten, so dass echte Trends über die sich ändernde Serie identifiziert werden können. Herauszufinden, wie die Berechnung als die Datenänderungen durchführen kann ein wenig entmutigend, aber wenn Sie es nie getan haben. Sobald Sie eine Methode, die Sie mögen lernen, obwohl, (gut decken zwei) seine leicht zu tun und youll finden viele Verwendungen für sie in Ihrem Tracking und Berichte. Lasst uns anfangen. Erste Dinge zuerst: gut brauchen eine Tabelle, die die Werte, die wir wollen durchschnittlich enthält. In der Praxis bei Compose, finden wir oft, dass die Basisdaten, die wir brauchen, nicht bereits ordentlich in einer Tabelle definiert sind. Aus diesem Grund haben wir ein paar Aggregat-Tabellen, die die Daten, die wir zusammen brauchen zu ziehen. Dies sind die Basistabellen, auf die wir fortgeschrittenere Berechnungen anwenden, wie einen gleitenden Durchschnitt. In einigen Fällen handelt es sich dabei um abgeleitete Tabellen, die vorübergehend für die Ausführung der Hauptabfrage existieren. In anderen Fällen können wir eine Ansicht oder eine materialisierte Ansicht verwenden. Also, wie Sie es bekommen, benötigen Sie eine Tabelle mit den Werten, die Sie durchschnittlich möchten und welche Dimension (en) Sie die Daten durch bestellen möchten. Für unser Beispiel, sagen wir weve wurde gebeten, einen 30-Tage-rollenden Durchschnitt für App-Downloads von Beispiel zu erstellen. Die App-Download-Daten wird täglich auf eine Tabelle mit dem Namen appdownloadsbydate und der jüngste Teil davon sieht so aussehen: In diesem Beispiel, Wird die Reihenfolge nach Datum wichtig sein, da wir einen 30-tägigen Rollendurchschnitt über die vorangegangenen Datenreihen berechnen wollen. Aus diesem Grund ist es wichtig, dass wir für jedes Datum eine Zeile haben. In unserem Fall tun wir, aber wenn Sie Lücken in Ihren Daten, wo es keine Werte für bestimmte Termine, können Sie generateseries beim Erstellen Ihrer Basistabelle, um sicherzustellen, dass Sie alle Zeilen youll benötigen. Beachten Sie, wie diese Reihe von Daten enthält fluctuating App-Downloads von 35 bis 7. Sein sehr schwierig, einen Trend aus diesen Daten zu sehen: Geben Sie den gleitenden Durchschnitt. Verwenden von Fensterrahmen für einen einfachen gleitenden Durchschnitt Wenn Sie aus unserem vorherigen Artikel in dieser Serie zu erinnern. Werden Fensterrahmen verwendet, um die Anzahl der Zeilen um die aktuelle Zeile anzuzeigen, die die Fensterfunktion enthalten soll. Sie erstellen eine Teilmenge von Daten für die Fenster-Funktion zu bedienen. Abhängig von Ihren Daten und Ihren Anforderungen kann Ihre gleitende Durchschnittsberechnung Zeilen vor und nach der aktuellen Zeile enthalten, aber für unsere Zwecke wird unser gleitender Durchschnitt die vorherigen Zeilen und die aktuelle Zeile verwenden, da wir einen neuen gleitenden Mittelwert erzeugen möchten Jedes neue Datum. Unsere Abfrage sieht folgendermaßen aus: Wurden ORDER BY auf unserem Datumsfeld verwendet, um sicherzustellen, dass unsere Daten in der von uns erwarteten Reihenfolge sein werden und wir haben angegebene ROWS ZWISCHEN 29 PRECEDING und CURRENT ROW, um den Fensterrahmen für die AVG-Berechnung einzustellen. Da der Fensterrahmen für jedes Datum fortschreitet, werden nur die vorherigen 29 Zeilen und die aktuelle (30 Tage) für die Berechnung verwendet: Da wir in diesem Fall die Daten in unserer Basistabelle vor dem 26. Mai für dieses Beispiel zeigen, Der Ergebnisse zu den Daten, an denen wir Ihnen die 29 vorhergehenden Zeilen gezeigt haben. Nehmen wir zum Beispiel den 30. Juni. Unser Fensterrahmen fokussiert unsere AVG-Aggregation auf die App-Downloads ab Juni nur diesen Teil unserer Basistabelle: So, jetzt, wenn wir das Rolling Average Weve berechnet, können wir sehen, dass die Daten geglättet und es gibt einen Aufwärtstrend Durch die erste Woche im Juni, dann eine volatilere Abwärtstrend nach, dass: Da dies zeigt nur ein Monat der Daten ist es nicht sehr für einen analytischen Bericht zu erzählen, aber hoffentlich hilft es Ihnen zu verstehen, wie die Berechnung eines gleitenden Durchschnitt kann nützlich für die Wirtschaft sein Analyse. Ein Tipp auf nicht einschließlich der aktuellen Zeile Wenn aus irgendeinem Grund Sie nicht möchten, dass die aktuelle Zeile für Ihre Fenster-Funktion und youre mit nur PRECEDING oder nur FOLLOWING-Einstellungen für Ihren Fensterrahmen, eine einfache Möglichkeit zu tun, die zu verwenden ist x PRECEDING oder Y FOLGEN Sie zweimal in Ihren ROWS ZWISCHEN. Klausel. Zum Beispiel sagen wir, wir wollten 30 Zeilen vor unserer aktuellen Zeile verwenden, aber nicht die aktuelle Zeile in den Fensterrahmen. Wir könnten schreiben, dass Klausel wie folgt: ZEITEN ZWISCHEN 30 PRECEDING UND 1 PRECEDING. Ebenso können wir die aktuelle Zeile ausschließen, jedoch 30 Zeilen wie folgt ausführen: ROWS BETWEEN 1 FOLLOWING und 30 FOLLOWING. Eine alternative Methode für einen einfachen gleitenden Durchschnitt Vor PostgreSQL 9.0, hatten wir nicht die x PRECEDING oder y FOLLOWING Fensterrahmen Optionen zur Verfügung. Um einen gleitenden Durchschnitt ohne Verwendung eines Fensterrahmens zu berechnen, können wir stattdessen zwei Tabellenaliasnamen aus unserer Basistabelle verwenden. Nun verwenden Sie einen Alias zu bedienen über die andere mit einem Datum Intervall. Check it out: Mit dieser Methode können wir die gleichen Ergebnisse erzielen, wie oben mit dem Fensterrahmen beschrieben. Wenn Sie über große Datenmengen arbeiten, wird die Fensterrahmenoption effizienter, aber diese Alternative ist vorhanden, wenn Sie sie verwenden möchten. Berechnung eines kumulativen gleitenden Durchschnitt Nun, dass Weve überprüft ein paar Methoden, wie man einen einfachen gleitenden Durchschnitt zu berechnen, gut schalten Sie unsere Fensterrahmen Beispiel, um zu zeigen, wie Sie auch einen kumulativen gleitenden Durchschnitt. Die gleichen Prinzipien gelten, aber anstatt mit einem ständig wechselnden Fensterrahmen für ein Intervall, erstreckt sich der Fensterrahmen einfach. Zum Beispiel, anstatt zu tun, einen 30-Tage-Rolling Durchschnitt, würde ein Jahr-to-date gleitenden Durchschnitt zu berechnen. Für jeden neuen Tag ist sein Wert einfach in der Durchschnittsberechnung von allen vorherigen Daten enthalten. Sehen wir uns dieses Beispiel an: Weil unsere Basistabelle ab dem 1. Januar für das laufende Jahr beginnt, wurde UNBOUNDED PRECEDING verwendet, um unseren Fensterrahmen zu setzen. Die Ergebnisse, die wir für diese kumulative Berechnung erhalten, sehen folgendermaßen aus: Wenn wir diese Ergebnisse darstellen, können Sie sehen, dass der Vorteil des kumulativen gleitenden Durchschnitts eine weitere Glättung der Daten ist, so dass sich nur signifikante Datenänderungen als Trends zeigen. Wir sehen jetzt, dass es einen leichten Aufwärtstrend Jahr-to-date: Wrapping Nun, da Sie wissen, ein paar verschiedene Arten von gleitenden Durchschnitten können Sie und ein paar verschiedene Methoden, um sie zu berechnen, können Sie mehr aufschlussreiche Analyse und mehr zu schaffen Wirksame Berichte. In unserem nächsten Metriken Maven Artikel, auch auf einige Optionen, wie Sie Daten ziemlich so, dass statt der Werte wie 20.4184782608695652, siehe auch 20.42. Bis zum nächsten Mal Kopie 2017 ComposeMoving Durchschnitt in T-SQL Eine gemeinsame Berechnung in der Trend-Analyse ist die bewegte (oder rollende) Durchschnitt. Ein gleitender Durchschnitt ist der Durchschnitt der letzten 10 Zeilen. Der gleitende Durchschnitt zeigt eine glattere Kurve als die tatsächlichen Werte, mehr also mit einer längeren Periode für den gleitenden Durchschnitt, was es zu einem guten Werkzeug für die Trendanalyse macht. Dieser Blogpfosten zeigt, wie man den gleitenden Durchschnitt in T-SQL berechnet. Abhängig von der Version von SQL Server werden unterschiedliche Methoden verwendet. Die nachstehende Tabelle zeigt den Glättungseffekt (rote Linie) mit einem 200 Tage gleitenden Durchschnitt. Die Aktienkurse sind die blaue Linie. Der langfristige Trend ist deutlich sichtbar. T-SQL Moving Avergage 200 Tage Die folgende Demonstration benötigt die TAdb-Datenbank, die mit dem hier befindlichen Skript erstellt werden kann. Im nächsten Beispiel wird ein gleitender Durchschnitt für die letzten 20 Tage berechnet. Abhängig von der Version von SQL Server gibt es eine andere Methode, um die Berechnung durchzuführen. Und, wie wir später sehen werden, haben die neueren Versionen von SQL Server Funktionen, die eine viel effektivere Berechnung ermöglichen. SQL Server 2012 und höher Moving Average Diese Version verwendet eine aggregierte Fensterfunktion. Was ist neu in SQL 2012 ist die Möglichkeit, die Größe des Fensters zu beschränken, indem Sie angeben, wie viele Zeilen vor dem Fenster enthalten sollten: Zeilen vorangegangen ist 19, weil wir die aktuelle Zeile auch in die Berechnung enthalten. Wie Sie sehen können, ist die Berechnung der gleitenden Durchschnitt in SQL Server 2012 ziemlich einfach. Die Abbildung unten zeigt das Fensterprinzip. Die aktuelle Zeile ist mit gelb markiert. Das Fenster ist blau markiert. Der gleitende Durchschnitt ist einfach der Durchschnitt von QuoteClose in den blauen Linien: T-SQL Moving Average Fenster. Die Ergebnisse der Berechnungen in älteren Versionen von SQL Server sind identisch, so dass sie nicht erneut angezeigt werden. SQL Server 2005 8211 2008R2 Moving Average Diese Version verwendet einen gemeinsamen Tabellenausdruck. Der CTE wird selbst referenziert, um die letzten 20 Zeilen für jede Zeile zu erhalten: Moving Average vor SQL Server 2005 Die pre 2005-Version wird eine linke äußere Verknüpfung zu der gleichen Tabelle verwenden, um die letzten 20 Zeilen zu erhalten. Die äußere Tabelle kann gesagt werden, um das Fenster zu enthalten, die wir durchschnittlich auf berechnen wollen: Leistung Vergleich Wenn wir die drei verschiedenen Methoden gleichzeitig und überprüfen Sie die resultierende Ausführungsplan laufen, gibt es einen dramatischen Unterschied in der Leistung zwischen den Methoden: Vergleich von drei Verschiedene Methoden, um den gleitenden Durchschnitt zu berechnen Wie Sie sehen können, macht die Verbesserung der Fensterfunktion in SQL 2012 einen großen Unterschied in der Leistung. Wie bereits am Anfang dieses Beitrags erwähnt, werden gleitende Durchschnittswerte als Trends verwendet. Ein gemeinsamer Ansatz besteht darin, Bewegungsdurchschnitte verschiedener Längen zu kombinieren, um Veränderungen in der kurz-, mittel - und langfristigen Entwicklung zu erkennen. Von besonderem Interesse sind die Übergänge der Trendlinien. Zum Beispiel, wenn sich der kurze Trend über den langen oder mittleren Trend bewegt, kann dieser als Kaufsignal in der technischen Analyse interpretiert werden. Und wenn sich der kurze Trend unter einer längeren Trendlinie bewegt, kann dies als Verkaufssignal interpretiert werden. Die folgende Tabelle zeigt Quotes, Ma20, Ma50 und Ma200. T-SQL Ma20, Ma50, Ma200 kaufen und verkaufen Signale. Dieser Blog-Beitrag ist Teil einer Serie über technische Analyse, TA, in SQL Server. Siehe die anderen Beiträge hier. Geschrieben von Tomas LindMoving Durchschnitt Microsoft Access zuletzt aktualisiert: 2012-05-10 ich eine Vielzahl von gleitenden Durchschnitten in Microsoft Access zu berechnen wollen, wo ich eine Tabelle mit den Spalten Date..Transaction Datum der Microsoft Beispiel unten Produkt descriptuon Preis verkauft haben. Währung in der Microsoft-Beispiel unten Microsoft gibt ein Beispiel für ein Modul an der Web-Adresse unten, aber es funktioniert nur einige der Zeit und hat auch Probleme, wenn ich einen neuen Monat starten .. alle von denen ich habe ein Problem mit meinen Daten, die Vergleichen Sie Datenbankfunktion MovAvg sind bei Datetime-Fomat Short Date Option eingestellt (currencyType, startdate, Periode As Integer) Dim rst Wie DAO. Recordset Dim SQL As String Dim ma As Currency Dim n As Integer sql quotSelect von table1 quot sql amp quotwhere currencyType quot amp currencyType amp quotquot sql amp quot und Transaction lt quot amp amp startdate quotquot sql amp quot um von transactiondatequot Set rst CurrentDb. OpenRecordset (sq l) rst. MoveLast Für n 0 bis Periode - 1 Wenn rst. BOF Dann MovAvg 0 Beenden Funktion Else ma ma rst. Fields (quotratequot) End If Next rst. MovePrevious n rst. Close MovAvg ma Zeit ich bin nicht Mann SQL aber kann Teil verstehen, was geschrieben wird, und erstellen sie durch Ausschneiden und einfügen die vorgeschlagene Lösung und es verwenden, aber wie ich sagte, dass es nur einen Teil der Zeit erscheinen, in kurzer Zeit gleitenden Durchschnitt (etwa 5 Tage) Problem, da das Datum Streik arbeitet in Richtung auf den 12. eines Monats die vor 5 Tage gleitenden Durchschnitt beginnt was darauf hindeutet, kommen in Fehler fallen, dass als Sie zweistelligen bewegen, um einzelne Ziffer geht etwas nicht funktioniert richtig ich habe auch Probleme, wenn meine Zeit etwa 23 Tage nicht überschreiten darf, wie ich immer eine Null auf dem 1. des Monats bekommen und manchmal auch die 2. Jede Hilfe zu verstehen, warum ich diese Probleme sehr haben Geschätzt Bitte korrigieren, was Sie zu tun versuchen, und arbeiten ein numerisches Beispiel. Posting einer Beispiel-MDB-Datei wäre am besten von allen. In jedem Fall sind Sie wahrscheinlich nicht brauchen VBA, um einen rollenden Durchschnitt erhalten eine normale SQL-Anweisung wird wahrscheinlich den Job zu tun, und schneller. Hier sind zwei schnelle Beispiele, wobei die angehängte Datei: 5 Tage rollenden Durchschnitt, nach Produkt, für die alle Tage einen durchschnittlichen durchschnittlichen Wert: 5 Tage rollenden Durchschnitt, nach Produkt, für Rolling-Durchschnitt ist Null, wenn es weniger als 5 Tage:
No comments:
Post a Comment