X-Git-Url: https://git.auder.net/?p=epclust.git;a=blobdiff_plain;f=data%2Fcurves_to_db%2Fexample.R;fp=data%2Fcurves_to_db%2Fexample.R;h=d8c6a47a40b6d1b6ea4f35199fb651db780472da;hp=0000000000000000000000000000000000000000;hb=e906736ea27105237e84c904dce6170353726292;hpb=57f337af19cd6251815bb1ff2d62f4c58e8b6078 diff --git a/data/curves_to_db/example.R b/data/curves_to_db/example.R new file mode 100644 index 0000000..d8c6a47 --- /dev/null +++ b/data/curves_to_db/example.R @@ -0,0 +1,46 @@ +require(RPostgreSQL) + +############################## +# Follow steps in README first +############################## + +nb_curves_per_request <- 100 #curves per (select) request + +# Init connection with DB +driver <- PostgreSQL(fetch.default.rec = nb_curves_per_request) +con <- dbConnect(driver, user="irsdi", password="irsdi2017", + host="localhost", port="5432", dbname="edf25m") + +# Fill associative array, map index to identifier +indexToID_inDB <- as.character( + dbGetQuery(con, 'SELECT DISTINCT id FROM series')[,"id"] ) + +# Function to retrieve curves within some indices range +getCurves <- function(indices) +{ + indices = indices[ indices <= length(indexToID_inDB) ] + if (length(indices) == 0) + return (NULL) + request <- "SELECT curve FROM series WHERE id in (" + for (i in seq_along(indices)) + { + request <- paste(request, indexToID_inDB[ indices[i] ], sep="") + if (i < length(indices)) + request <- paste(request, ",", sep="") + } + request <- paste(request, ")", sep="") + df_series <- dbGetQuery(con, request) + +#weird result: an integer, and then string "{val1,val2,val3,...,valD}" :/ +#print(summary(df_series)) +df_series +# matrix(df_series[,"value"], ncol=length(indices)) +} + +# Test +#curves <- getCurves(c(1:3,7,11)) +library(epclust) +res <- claws(getCurves, 50, 15, 500, 500, random=FALSE, ncores_clust=3, verbose=TRUE) + +dbDisconnect(con) +unlink(temp_file)