R 大数据表的高效内存子集设置
我有一个大小为11GB和16GB的SQLite数据库(与OS等共享)。我想使用data.table执行子集设置方法:R 大数据表的高效内存子集设置,r,memory,data.table,subset,R,Memory,Data.table,Subset,我有一个大小为11GB和16GB的SQLite数据库(与OS等共享)。我想使用data.table执行子集设置方法: # database connection con = dbConnect(dbDriver("SQLite"), dbname=sqlite_database) # read table from database inventory <- as.data.table(dbGetQuery( con,'select * from inventory')) # subs
# database connection
con = dbConnect(dbDriver("SQLite"), dbname=sqlite_database)
# read table from database
inventory <- as.data.table(dbGetQuery( con,'select * from inventory'))
# subset table
unfulfilled_inventory <- inventory[period >= stableStateStart, .(period, articleID, unfulfilledQuantities, backlog, stock)]
是否有一种方法可以以更高效的内存方式进行此子集设置?我试着建立一个向量进行向量扫描,但结果是一样的。或者有没有一种方法可以使用交换空间来执行此操作(我并不真正关心速度)。目前我只想到两种方法:
setDT
而不是as.data.table
,从数据库读取数据时将节省一些内存orderbytmpcol
,也可能有助于在后面的步骤中设置dt(,key=“tmpcol”)确保使用数据。表1.9.6-最近发布到CRAN。目前我只想到两个:
setDT
而不是as.data.table
,从数据库读取数据时将节省一些内存orderbytmpcol
,也可能有助于在后面的步骤中设置dt(,key=“tmpcol”)确保使用数据。表1.9.6-最近发布到CRAN。只是为了确认,此处哪个对象是
5.2GB
?另外,dim(inventory)
会产生什么结果?更新问题只是为了确认,此处的对象是5.2GB
?还有dim(库存)
会产生什么结果?更新了问题
dim(unfulfilled_inventory)
[1] 127500000 6
sql = "SELECT *, period >= stableStateStart AS tmpcol FROM inventory"
inventory = setDT(dbGetQuery(conn, sql), key="tmpcol")
inventory[.(TRUE)]