Create a node similar to a Codd extend relational operator (add derived columns).
extend_se(source, assignments, ..., partitionby = NULL, orderby = NULL,
reverse = NULL, display_form = NULL, env = parent.frame())
source to select from.
new column assignment expressions.
force later arguments to bind by name
partitioning (window function) terms.
ordering (in window function) terms.
reverse ordering (in window function) terms.
chacter presentation form
environment to look for values in.
extend node.
Partitionby and orderby can only be used with a database that supports window-functions (such as PostgreSQL, Spark and so on).
# NOT RUN {
if (requireNamespace("DBI", quietly = TRUE) && requireNamespace("RSQLite", quietly = TRUE)) {
my_db <- DBI::dbConnect(RSQLite::SQLite(), ":memory:")
d <- rq_copy_to(my_db, 'd',
data.frame(AUC = 0.6, R2 = 0.2))
optree <- extend_se(d, c("v" %:=% "AUC + R2", "x" %:=% "pmax(AUC,v)"))
cat(format(optree))
sql <- to_sql(optree, my_db)
cat(sql)
print(DBI::dbGetQuery(my_db, sql))
# SQLite can not run the following query
optree2 <- extend_se(d, "v" %:=% "rank()",
partitionby = "AUC", orderby = "R2")
sql2 <- to_sql(optree2, my_db)
cat(sql2)
DBI::dbDisconnect(my_db)
}
# }
Run the code above in your browser using DataLab