Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

39 Zeilen
1.1KB

  1. .globals <- new.env(parent = emptyenv())
  2. duckdb_global_con <- function() {
  3. if (is.null(.globals$duckdb_con)) {
  4. .globals$duckdb_con <- con <- DBI::dbConnect(duckdb::duckdb())
  5. }
  6. .globals$duckdb_con
  7. }
  8. cf_prep_db_create <- function(data_dir = here::here("data-prep")) {
  9. tables <- dir_ls(data_dir)
  10. names(tables) <- path_file(tables)
  11. idx_report_list <- which(names(tables) == "report_list")
  12. cli::cli_progress_bar(name = "Opening parquet files", total = length(tables))
  13. env <- rlang::current_env()
  14. tbls_arrow <- tables[-idx_report_list] |>
  15. imap(function(path, name) {
  16. cli::cli_progress_update(inc = 1, status = name, .envir = env)
  17. arrow::open_dataset(path, partitioning = "sboe_id")
  18. })
  19. cli::cli_progress_update(inc = 1, status = "report_list")
  20. tbls_arrow$report_list <- arrow::open_dataset(tables["report_list"])
  21. cli::cli_progress_done()
  22. con <- duckdb_global_con()
  23. cli::cli_progress_step("Creating db")
  24. imap(tbls_arrow, function(df, name) {
  25. duckdb::duckdb_register_arrow(con, name, df)
  26. dplyr::tbl(con, name)
  27. })
  28. }