rq_coltypes | R Documentation |
Example values not necessarily all from same row. Taking values from different rows is to try to work around NA not carrying type/class info in many cases.
rq_coltypes(
db,
table_name,
...,
qualifiers = NULL,
prefer_not_NA = FALSE,
force_check = FALSE
)
db |
Connection handle. |
table_name |
character table name referring to a non-empty table. |
... |
force later arguments to bind by name. |
qualifiers |
optional named ordered vector of strings carrying additional db hierarchy terms, such as schema. |
prefer_not_NA |
logical, if TRUE try to find an non-NA example for all columns (FALSE just for logical columns). |
force_check |
logical, if TRUE perform checks regardless of check_logical_column_types option setting. |
single row data.frame with example values, not all values necessarily from same database row.
if(requireNamespace("DBI", quietly = TRUE) && requireNamespace("RSQLite", quietly = TRUE)) {
db <- DBI::dbConnect(RSQLite::SQLite(), ":memory:")
# getDBOption(db, "check_logical_column_types", FALSE)
# options(rq_connection_tests(db))
# getDBOption(db, "check_logical_column_types", FALSE)
d <- data.frame(w= c(NA, 1L),
x= c(NA, 2.0),
y= factor(c(NA, "x")),
z= c(NA, "y"),
want = c(1, 0),
stringsAsFactors=FALSE)
d <- rq_copy_to(db, "d", d,
overwrite = TRUE,
temporary = TRUE)
res <- d %.>%
extend(.,
wc %:=% ifelse(w>1, "x", "y"),
wn %:=% ifelse(w>1, 1, 2),
xc %:=% ifelse(x>1, "x", "y"),
xn %:=% ifelse(x>1, 1, 2),
yc %:=% ifelse(y=="a", "x", "y"),
yn %:=% ifelse(y=="a", "x", "y")) %.>%
materialize(db, .)
resn <- DBI::dbQuoteIdentifier(db, res$table_name)
print("full table types")
print(str(DBI::dbGetQuery(db, paste("SELECT * FROM", resn))))
print("single row mis-reported types")
print(str(DBI::dbGetQuery(db, paste("SELECT * FROM", resn, "WHERE want=1"))))
print("rq_coltypes correct synthetic example row types")
print(str(rq_coltypes(db, res$table_name, force_check = TRUE)))
DBI::dbDisconnect(db)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.