R/join_controller.R
inspect_join_plan.Rd
Please see vignette('DependencySorting', package = 'rquery')
and vignette('joinController', package= 'rquery')
for more details.
inspect_join_plan(tDesc, columnJoinPlan, ..., checkColClasses = FALSE)
description of tables, from describe_tables
(and likely altered by user).
columns to join, from build_join_plan
(and likely altered by user). Note: no column names must intersect with names of the form table_CLEANEDTABNAME_present
.
force later arguments to bind by name.
logical if true check for exact class name matches
NULL if okay, else a string
if (requireNamespace("DBI", quietly = TRUE) && requireNamespace("RSQLite", quietly = TRUE)) {
my_db <- DBI::dbConnect(RSQLite::SQLite(), ":memory:")
# example data
DBI::dbWriteTable(my_db,
"d1",
data.frame(id= 1:3,
weight= c(200, 140, 98),
height= c(60, 24, 12)))
DBI::dbWriteTable(my_db,
"d2",
data.frame(pid= 2:3,
weight= c(130, 110),
width= 1))
# get the initial description of table defs
tDesc <- describe_tables(my_db, qc(d1, d2))
# declare keys (and give them consistent names)
tDesc$keys[[1]] <- list(PrimaryKey= 'id')
tDesc$keys[[2]] <- list(PrimaryKey= 'pid')
# build the join plan
columnJoinPlan <- build_join_plan(tDesc)
# confirm the plan
print(inspect_join_plan(tDesc, columnJoinPlan,
checkColClasses= TRUE))
# damage the plan
columnJoinPlan$sourceColumn[columnJoinPlan$sourceColumn=='width'] <- 'wd'
# find a problem
print(inspect_join_plan(tDesc, columnJoinPlan,
checkColClasses= TRUE))
DBI::dbDisconnect(my_db)
}
#> NULL
#> [1] "table description d2 refers to non-column(s): wd"