con <- DBI::dbConnect(odbc::odbc(), "OracleODBC-19")
person <- dplyr::tbl(con, DBI::Id(schema = "CDMV5", table = "PERSON"))
observation_period <- dplyr::tbl(con, DBI::Id(schema = "CDMV5", table = "OBSERVATION_PERIOD"))
dplyr::inner_join(person, observation_period, by = "PERSON_ID")
#> Error in `collect()`:
#> ! Failed to collect lazy table.
#> Caused by error:
#> ! nanodbc/nanodbc.cpp:1655: 00000: [Oracle][ODBC][Ora]ORA-01741: illegal zero-length identifier
#>
#> <SQL> 'SELECT *
#> FROM (
#> SELECT
#> """CDMV5"".""PERSON""".*,
#> "OBSERVATION_PERIOD_ID",
#> "OBSERVATION_PERIOD_START_DATE",
#> "OBSERVATION_PERIOD_END_DATE",
#> "PERIOD_TYPE_CONCEPT_ID"
#> FROM ("CDMV5"."PERSON") """CDMV5"".""PERSON"""
#> INNER JOIN ("CDMV5"."OBSERVATION_PERIOD") """CDMV5"".""OBSERVATION_PERIOD"""
#> ON ("""CDMV5"".""PERSON"""."PERSON_ID" = """CDMV5"".""OBSERVATION_PERIOD"""."PERSON_ID")
#> ) "q01"
#> FETCH FIRST 11 ROWS ONLY'
#> Backtrace:
#> ▆
#> 1. ├─base::tryCatch(...)
#> 2. │ └─base (local) tryCatchList(expr, classes, parentenv, handlers)
#> 3. │ ├─base (local) tryCatchOne(...)
#> 4. │ │ └─base (local) doTryCatch(return(expr), name, parentenv, handler)
#> 5. │ └─base (local) tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
#> 6. │ └─base (local) tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> 7. │ └─base (local) doTryCatch(return(expr), name, parentenv, handler)
#> 8. ├─base::withCallingHandlers(...)
#> 9. ├─base::saveRDS(...)
#> 10. ├─base::do.call(...)
#> 11. ├─base (local) `<fn>`(...)
#> 12. └─global `<fn>`(input = base::quote("nerdy-ram_reprex.R"))
#> 13. └─rmarkdown::render(input, quiet = TRUE, envir = globalenv(), encoding = "UTF-8")
#> 14. └─knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
#> 15. └─knitr:::process_file(text, output)
#> 16. ├─base::withCallingHandlers(...)
#> 17. ├─knitr:::process_group(group)
#> 18. └─knitr:::process_group.block(group)
#> 19. └─knitr:::call_block(x)
#> 20. └─knitr:::block_exec(params)
#> 21. └─knitr:::eng_r(options)
#> 22. ├─knitr:::in_input_dir(...)
#> 23. │ └─knitr:::in_dir(input_dir(), expr)
#> 24. └─knitr (local) evaluate(...)
#> 25. └─evaluate::evaluate(...)
#> 26. └─evaluate:::evaluate_call(...)
#> 27. ├─evaluate (local) handle(...)
#> 28. │ └─base::try(f, silent = TRUE)
#> 29. │ └─base::tryCatch(...)
#> 30. │ └─base (local) tryCatchList(expr, classes, parentenv, handlers)
#> 31. │ └─base (local) tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> 32. │ └─base (local) doTryCatch(return(expr), name, parentenv, handler)
#> 33. ├─base::withCallingHandlers(...)
#> 34. ├─base::withVisible(value_fun(ev$value, ev$visible))
#> 35. └─knitr (local) value_fun(ev$value, ev$visible)
#> 36. └─knitr (local) fun(x, options = options)
#> 37. ├─base::withVisible(knit_print(x, ...))
#> 38. ├─knitr::knit_print(x, ...)
#> 39. └─rmarkdown:::knit_print.tbl_sql(x, ...)
#> 40. ├─context$df_print(x)
#> 41. └─dbplyr:::print.tbl_sql(x)
#> 42. ├─dbplyr:::cat_line(format(x, ..., n = n, width = width, n_extra = n_extra))
#> 43. │ ├─base::cat(paste0(..., "\n"), sep = "")
#> 44. │ └─base::paste0(..., "\n")
#> 45. ├─base::format(x, ..., n = n, width = width, n_extra = n_extra)
#> 46. └─pillar:::format.tbl(x, ..., n = n, width = width, n_extra = n_extra)
#> 47. └─pillar:::format_tbl(...)
#> 48. └─pillar::tbl_format_setup(...)
#> 49. ├─pillar:::tbl_format_setup_dispatch(...)
#> 50. └─pillar:::tbl_format_setup.tbl(...)
#> 51. └─pillar:::df_head(x, n + 1)
#> 52. ├─base::as.data.frame(head(x, n))
#> 53. └─dbplyr:::as.data.frame.tbl_sql(head(x, n))
#> 54. ├─base::as.data.frame(collect(x, n = n))
#> 55. ├─dplyr::collect(x, n = n)
#> 56. └─dbplyr:::collect.tbl_sql(x, n = n)
#> 57. └─base::tryCatch(...)
#> 58. └─base (local) tryCatchList(expr, classes, parentenv, handlers)
#> 59. └─base (local) tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> 60. └─value[[3L]](cond)
#> 61. └─cli::cli_abort("Failed to collect lazy table.", parent = cnd)
#> 62. └─rlang::abort(...)
observation_period <- dplyr::tbl(con, dbplyr::in_schema("CDMV5", "OBSERVATION_PERIOD"))
person <- dplyr::tbl(con, dbplyr::in_schema("CDMV5", "PERSON"))
dplyr::inner_join(person, observation_period, by = "person_id")
#> Error in `dplyr::inner_join()`:
#> ! Join columns in `x` must be present in the data.
#> ✖ Problem with `person_id`.
#> Backtrace:
#> ▆
#> 1. ├─dplyr::inner_join(person, observation_period, by = "person_id")
#> 2. └─dbplyr:::inner_join.tbl_lazy(person, observation_period, by = "person_id")
#> 3. └─dbplyr:::add_join(...)
#> 4. └─dbplyr:::join_cols(...)
#> 5. └─dbplyr:::check_join_vars(by$x, x_names, by$condition, "x", error_call = error_call)
#> 6. └─cli::cli_abort(bullets, call = error_call)
#> 7. └─rlang::abort(...)
DBI::dbDisconnect(con)
While
dbplyr::in_schemacan be used to create table references to an Oracle table in a schema,DBI::Idcannot. I would expect the behavior to be similar.Created on 2023-03-07 with reprex v2.0.2
Session info