Si consideri la seguente query:Arel: seleziona dalla funzione
SELECT DATE_TRUNC('hour', date_range)
FROM GENERATE_SERIES(:start_date, :end_date, :interval) as date_range
E 'possibile utilizzare GENERATE_SERIES(...)
come una tabella (fonte dati)? Idealmente, sarebbe simile a questa:
t = series(start, end, as: 'date_range')
dt = Arel::Nodes::NamedFunction.new('DATE_TRUNC', ['hour', t[:date_range]])
t.project(dt)
UPD1. Perché ho bisogno di GENERATE_SERIES
? Ho alcuni dati che ho bisogno di elaborare per quanto riguarda i timestamp su cui erano disponibili questi dati e li ho prodotti come un grafico 2D. Come esempio semplice si consideri un clickstream
= (id
, created_at
). Voglio tracciare un numero di clic effettuati prima di una certa data rispetto a una data griglia datetime (cioè Nov 17, Nov 18, Nov 19, ..., Nov 30
). E il fatto è che voglio che tutto questo avvenga all'interno di PostgreSQL.
Aggiornamento2. query di esempio, senza variabili potrebbe essere la seguente:
SELECT DATE_TRUNC('hour', date_range) FROM GENERATE_SERIES('2015-01-01 00:15:38'::TIMESTAMP, '2015-01-10 23:59:59'::TIMESTAMP, '1 HOUR') as date_range;
Può descrivere brevemente cosa stai cercando di raggiungere, a parte il codice che hai usato? Può esserci una soluzione migliore o diversa che non implichi la funzione 'generate_series'. –
Fornire una query di esempio reale senza variabili. – dankohn
@SimoneCarletti Ho aggiornato la domanda con una motivazione dietro generare serie. Ha senso ora? –