Sto cercando di implementare una media mobile esponenziale (EMA) su postgres, ma mentre controllo la documentazione e ci penso più provo più sono confuso.Come calcolare una media mobile esponenziale su postgres?
La formula per EMA(x)
è:
EMA(x1) = x1 EMA(xn) = α * xn + (1 - α) * EMA(xn-1)
Sembra essere perfetto per un aggregatore, mantenendo il risultato dell'ultimo elemento calcolato è esattamente ciò che deve essere fatto qui. Tuttavia un aggregatore produce un singolo risultato (come riduci o piega) e qui abbiamo bisogno di una lista (una colonna) di risultati (come mappa). Ho controllato come funzionano le procedure e le funzioni, ma AFAIK produce un singolo output, non una colonna. Ho visto molte procedure e funzioni, ma non riesco a capire come interagisca con l'algebra relazionale, specialmente quando si fa qualcosa del genere, un EMA.
Non ho avuto fortuna a cercare gli Internet finora. Ma la definizione di un EMA è abbastanza semplice, spero che sia possibile tradurre questa definizione in qualcosa che funziona in postgres ed è semplice ed efficiente, perché il passaggio a NoSQL sarà eccessivo nel mio contesto.
Grazie.
PD: qui potete vedere un esempio:
https://docs.google.com/spreadsheet/ccc?key=0AvfclSzBscS6dDJCNWlrT3NYdDJxbkh3cGJ2S2V0cVE
Pubblica fonte tabella di esempio di un risultato atteso. Questo può aiutare. – danihp