Monday 30 October 2017

Exponentiell Gleitender Durchschnitt Mysql


Als ich ein ähnliches Problem hatte, landete ich mit temp-Tischen für eine Vielzahl von Gründen, aber es machte dies viel einfacher Was ich tat, sieht sehr ähnlich, was Sie tun, soweit das Schema geht. Machen Sie das Schema so etwas wie ID Identität, Startdatum, Enddatum, Wert Wenn du auswählst, mache ein Subselect avg der vorherigen 20 auf der Identitäts-ID. Nur dies tun, wenn Sie sich bereits mit temp-Tabellen aus anderen Gründen, obwohl ich die gleichen Zeilen immer und immer für Verschiedene Metriken, also war es hilfreich, den kleinen Datensatz zu haben. In meiner Erfahrung, Mysql ab 5 5 x tendiert nicht, Indizes auf abhängigen auswahlen zu verwenden, ob eine Unterabfrage oder ein Verband Dies kann einen sehr bedeutenden Einfluss auf die Leistung haben, wo die abhängigen auswählen Kriterien ändern sich auf jedem rovend. Moving Durchschnitt ist ein Beispiel für eine Abfrage, die in diese Kategorie fällt Ausführungszeit kann mit dem Quadrat der Zeilen erhöhen Um dies zu vermeiden, wählen Sie eine Datenbank-Engine, die indexierte Look-ups auf abhängigen Auswahls ausführen kann ich Postgres finden Arbeitet effektiv für dieses Problem. answered Jul 2 14 bei 8 01.Your Antwort.2017 Stack Exchange, Inc. Using ein einfacher gleitender Durchschnitt zu glätten Daten ist eine ziemlich beliebte Technik es ist zu schlecht das primäre Beispiel in der SQL Anywhere Hilfe ist Weit von einfach Was macht dieses Beispiel so komplex Neben der Problem-Aussage, das ist berechnen den gleitenden Durchschnitt aller Produktverkäufe, im Monat, im Jahr 2000.Hier s, was macht es komplex. Zwei Verweise auf die AVG-Funktion. a GROUP BY Die alle von sich aus irgendwelche SELECT einen Kopf-Scratcher macht. Eine Stealth-WINDOW-Klausel. ein WINDOW-Klausel, die nicht einmal das WINDOW-Keyword verwendet, so dass die Uneingeweihten die Leute, die Beispiele mehr als alle anderen brauchen, ist es nicht offensichtlich, dass ein FENSTER überhaupt beteiligt ist. Nicht nur eine WINDOW-Klausel, Aber eine, die jede einzelne Komponente, die Sie in einer WINDOW. a PARTITION BY. a RANGE Klausel nicht eine einfache ROWS-Klausel, aber voll-geblasen RANGE-Klausel, eine, die eine intime Beziehung mit der ORDER BY Ich weiß, was eine Zeile ist, Aber was das Redakteur ist ein RANGE. But warten, da s mehr Die Wahl von RANGE über ROWS in diesem Beispiel ist entscheidend für den korrekten Betrieb der Abfrage für eine ausführlichere Diskussion dieses Beispiels, siehe Beispiel 23 - Berechnen eines Moving Average In Glenn Paulley s ausgezeichnetes OLAP weißes Papier Jetzt, lassen Sie s wieder auf track. A Wirklich wirklich einfach Moving Average. Das folgende Beispiel zeigt 10 Tage im Wert von Daten zusammen mit dem gleitenden Durchschnitt der heutigen Wert und gestern s Die WINDOW-Klausel auf Linien 21 bis 23 definiert ein bewegendes Fenster, das zwei Zeilen enthält, die heute die Zeile CURRENT ROW und gestern s Zeile 1 PRECEDING. die FENSTER ORDER BY-Klausel bestimmt, was PRECEDING die vorhergehende Zeile durch und. die ROWS-Klausel bestimmt die Größe des Fensters immer zwei Zeilen. Der Ausdruck AVG OVER twodays auf Zeile 19 bezieht sich auf die WINDOW-Klausel nach Namen, und es sagt SQL Anywhere, um den Durchschnitt der beiden Werte zu berechnen, die im 2-reihigen Schiebefenster vorhanden sind, für jede Zeile im Ergebnis set. So , Für 2012-02-02 der Durchschnitt von 10 und 20 ist 15 000000.for 2012-02-03 der Durchschnitt von 20 und 10 ist 15 000000.for 2012-02-04 der Durchschnitt von 10 und 30 ist 20 000000.for 2012-02-10 der Durchschnitt von 10 und 60 ist 35 000000.Oops, was über die erste row. The 2012-02-01 Zeile doesn t haben eine PRECEDING Zeile, also was ist der Durchschnitt über das bewegte Fenster. Nach Glenn Paulley s Whitepaper im Falle eines bewegten Fensters, wird davon ausgegangen, dass Zeilen, die Nullwerte enthalten, vor der ersten Zeile und nach der letzten Zeile in der Eingabe vorhanden sind. Das bedeutet, wenn das bewegte Fenster 2012-02-01 als das hat CURRENT ROW, die 1 PRECEDING-Zeile enthält NULL-Werte und wenn SQL Anywhere ein AVG berechnet, das einen NULL-Wert enthält, zählt es nicht das NULL überhaupt nicht im Zähler oder im Nenner bei der Berechnung des durchschnittlichen Hier s-Beweis Das ist der Grund, warum twodayaverage 10 000000 für die erste Reihe 2012-02-01.Posted von Breck Carter um 3 47 PM. In meinem letzten Vortrag bei Surge und Percona Live über adaptive Fehlererkennung Dias, habe ich behauptet, dass Hardcoded Schwellen für Alarmierung über Fehler Bedingungen sind in der Regel am besten zu Zugunsten von dynamischen oder adaptiven Schwellen zu vermeiden, ging ich eigentlich viel weiter als das und sagte, dass es möglich ist, Fehler mit großem Vertrauen in vielen Systemen wie MySQL zu erkennen, ohne irgendwelche Schwellenwerte überhaupt zu setzen. In diesem Beitrag möchte ich ein bisschen mehr erklären Über die gleitenden Mittelwerte, die ich für die Bestimmung des normalen Verhaltens in den behandelten Beispielen verwendet habe Es gibt zwei offensichtliche Kandidaten für das Bewegen von Durchschnitten, die gleitende Durchschnitte und exponentiell gewichtete Bewegungsdurchschnitte sind. Ein einfacher gleitender Durchschnitt berechnet nur den durchschnittlichen Mittelwert über die letzten N Datenproben Fall, ich verwendete 60 Samples Dies erfordert das Halten eines Arrays der vorherigen N Samples und das Aktualisieren des Durchschnitts für jede Probe. Ein exponentieller gleitender Durchschnitt erfordert nicht, Proben zu halten. Der Durchschnitt ist eine einzelne Zahl und Sie haben einen so genannten Glättungsfaktor Für jeden Neue Probe, Sie multiplizieren den alten Durchschnitt mit 1 und fügen Sie ihn dann zu den neuen Sample-Zeiten hinzu avg 1-alpha avg alpha sample. Both Techniken haben ihre Nachteile Beide erfordern eine Warmlaufperiode, zum Beispiel Offensichtlich im Falle eines 60-Probe bewegte Fenster, benötigen Sie 60 Proben, bevor Sie beginnen können Der exponentielle gleitende Durchschnitt kann aus dem Mittel der ersten 10 Samples grundiert werden, in meiner Erfahrung Beide Techniken verzögern auch den Trend in den Proben zu einem gewissen Grad Wenn es einen dramatischen Wechsel gibt In dem Muster, nehmen sie eine Weile, um aufzuholen. Hier eine Handlung von einigen realen Daten und die beiden Techniken Klicken Sie durch, um ein größeres Bild zu sehen Die blaue Linie ist die abgetasteten Daten, die rote Linie ist ein exponentieller gleitender Durchschnitt mit durchschnittlich 60 - zweites Gedächtnis, und die gelbe Linie ist ein 60-Sekunden-Gleitender Durchschnitt. Notice, wie die rote Linie dazu neigt, Kurs-korrekt schneller und bleiben mehr zutreffend für das aktuelle Verhalten der blauen Linie Dies ist ein Vorteil der exponentiellen gleitenden Durchschnitt, wenn Das ist, was du wünschst. Es ist nicht offensichtlich in diesen Daten, aber der einfache gleitende Durchschnitt hat einen weiteren Nachteil Angenommen, es gibt eine Spitze von sehr hohen Werten in den abgetasteten Daten für ein paar Sekunden Für die nächsten 60 Sekunden wird diese Spitze zu gehen Innerhalb des Fensters sein, den gleitenden Durchschnitt aufblasen Wenn es aus dem Fenster entsorgt wird, bewirkt es, dass der gleitende Durchschnitt plötzlich abfällt. Ich habe festgestellt, dass dies in mehreren Fällen problematisch ist. Es ist besonders deutlich, wenn man die Standardabweichung der Proben oder Andere sensible Statistiken über das bewegte Fenster. Der exponentielle gleitende Durchschnitt hat dieses Problem nicht, weil dieser Spike sich nie aus dem Fenster bewegt. Sein Einfluss ist für immer da, aber wie die Zeit vergeht, wird es allmählich kleiner, in einer glatten Art und Weise Abrupte Spikes im aktuellen Durchschnitt, basierend auf dem, was vor 60 Sekunden passiert ist. Dies ist nur Kratzen der Oberfläche der Techniken, die ich auf einem großen Satz von Tagen bis Wochen von Daten aus Zehntausenden von realen Servern erforscht habe. Da bekomme ich Zeit, ich ll Versuche, in der Zukunft mehr darüber zu schreiben.

No comments:

Post a Comment