Wie Arun im Kommentar darauf hingewiesen, können Sie einfach setDT
auf dbGetQuery
Ergebnisse verwenden.
Zusätzlich gibt es eine Hilfsfunktion in meinem Paket dwtools, die diese Funktion für Auto setkey
bei Bedarf erweitert. Dies wurde entwickelt, um beim Verketten nützlich zu sein. Es vereinheitlicht auch die Schnittstelle zu anderen Datenbankanbietern, so dass Sie data.table mit verschiedenen Datenbanken verketten können.
Die einfache select Nutzung wird wie folgt aussieht:
my_dt = db("SELECT * FROM eqtl")
# to setkey use
db("SELECT * FROM eqtl", key="mykeycol")
Stark erweitertes Beispiel aus dem Paket manuell:
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
]
Es wäre von Daten aus mehreren Datenbanken lesen, schließt sich, Aggregate, Zwischenergebnisse zu mehreren Datenbanken speichern.
Vielleicht keine Antwort, die Sie suchen (?), Aber wenn Sie es bereits als 'dat.frame' gelesen haben, können Sie' setDT() 'verwenden, um es in' data.table' zu konvertieren * durch Referenz * (die Konvertierung sollte sofort von data.frame nach data.table erfolgen) - dh 'data <- dbGetQuery (...); setDT (Daten) '. – Arun
@Arun danke, das ist wahrscheinlich, was ich am Ende tun werde, obwohl ich 'data.frame's aus der Gleichung insgesamt entfernen wollte. – rmccloskey