Ho una tabella / collezione chiamata punteggi e ha 3 identificatori rilevanti in base ai quali il calcolo deve essere fatto.
campione
{
score : Number,
company : String,
zone : String,
unit : String,
timestamp : Number
}
Ogni giorno riceviamo enormi quantità di dati in questa tabella dei punteggi che ha 3 identificatori. Sulla dashboard lato client, siamo tenuti a mostrare separatamente la progressione per azienda, zona e unità per le ultime sei settimane.
E le settimane non sono fisse, sono invece dinamiche. Ad esempio, se stai controllando la dashboard il 15 marzo, vengono mostrati i dati delle ultime 6 settimane dalla data x al 14 marzo. Progressione in termini di settimane.
Il piano è di creare un sistema che a mezzanotte prenderà i punteggi dai record degli ultimi 42 giorni da quel momento e calcolerà il punteggio settimanale e quindi lo salverà per ogni azienda, zona e unità separatamente.
Non so se questo approccio sia corretto o meno, probabilmente no. Diciamo che ci sono 500 record in arrivo nel sistema ogni giorno, quindi per 42 giorni avrò circa 21000 record. Ora il calcolo deve essere fatto separatamente per tutte e tre le entità.
Inoltre i record che sto andando a recuperare in base all'identificatore (uno da un set di tre) & timestamp, finirò con 42 giorni di dati. Come posso trasformarli in formato settimane? Dovrei recuperare i dati di 42 giorni in una volta sola e poi distribuirli tramite timestamp usando le condizioni o dovrei semplicemente chiamare per 1 settimana i dati in una volta sola.
Questo approccio sembra davvero fonte di confusione, dato che l'output che sto per ottenere non è così significativo. È questo l'approccio giusto per risolvere questo problema?
Voglio creare un sistema che verrà ridimensionato in futuro per più dati e non solo per 21k records.