Come indicato da Arun nel commento, è possibile utilizzare solo setDT
sui risultati dbGetQuery
.
Inoltre è disponibile una funzione di supporto nel pacchetto dwtools che estende questa funzionalità per l'auto setkey
quando necessario. Questo è stato progettato per essere utile quando si concatena. Inoltre, unifica l'interfaccia con altri fornitori di database in modo da poter incatenare data.table utilizzando diversi database.
La semplice selezionare utilizzo volontà assomiglia:
my_dt = db("SELECT * FROM eqtl")
# to setkey use
db("SELECT * FROM eqtl", key="mykeycol")
esempio fortemente estesa da manuale pacchetto:
jj_aggr = quote(list(amount=sum(amount), value=sum(value)))
r <- db("sales",key="geog_code" # read fact table from db
)[,eval(jj_aggr),keyby=c("geog_code","time_code") # aggr by geog_code and time_code
][,db(.SD) # write to db, auto.table.name
][,db("geography",key="geog_code" # read lookup geography dim from db
)[.SD # left join geography
][,eval(jj_aggr), keyby=c("time_code","geog_region_name")] # aggr
][,db(.SD) # write to db, auto.table.name
][,db("time",key="time_code" # read lookup time dim from db
)[.SD # left join time
][, eval(jj_aggr), keyby=c("geog_region_name","time_month_code","time_month_name")] # aggr
][,db(.SD) # write to db, auto.table.name
]
Sarebbe leggere i dati da più database, si unisce, aggregati, salvare i risultati intermedi a più database.
Forse non è una risposta che stai cercando (?), Ma se lo hai già letto come 'data.frame', puoi usare' setDT() 'per convertirlo in' data.table' * per riferimento * (la conversione dovrebbe essere istantanea da data.frame a data.table) - cioè, 'data <- dbGetQuery (...); setDT (dati) '. – Arun
@Arun grazie, probabilmente è quello che finirò a fare, anche se mi sarebbe piaciuto rimuovere 'data.frame's dall'equazione del tutto. – rmccloskey