| cf_db_create <- function(data_dir = here::here("data")) { | |||||
| tables <- dir_ls(data_dir) | |||||
| names(tables) <- path_file(tables) | |||||
| idx_report_list <- which(names(tables) == "report_list") | |||||
| cli::cli_progress_bar(name = "Opening parquet files", total = length(tables)) | |||||
| env <- rlang::current_env() | |||||
| tbls_arrow <- tables[-idx_report_list] |> | |||||
| imap(function(path, name) { | |||||
| cli::cli_progress_update(inc = 1, status = name, .envir = env) | |||||
| arrow::open_dataset(path, partitioning = "sboe_id") | |||||
| }) | |||||
| cli::cli_progress_update(inc = 1, status = "report_list") | |||||
| tbls_arrow$report_list <- arrow::open_dataset(tables["report_list"]) | |||||
| cli::cli_progress_done() | |||||
| con <- DBI::dbConnect(duckdb::duckdb()) | |||||
| cli::cli_progress_step("Creating db") | |||||
| imap(tbls_arrow, function(df, name) { | |||||
| duckdb::duckdb_register_arrow(con, name, df) | |||||
| dplyr::tbl(con, name) | |||||
| }) | |||||
| } |