## ----include = FALSE---------------------------------------------------------- # Evaluate chunks only where the ducklake DuckDB extension is already # installed. The probe never downloads anything, so building this vignette # needs no network access. ducklake_available <- ducklake::ducklake_extension_available() knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.width = 7, fig.height = 4, eval = ducklake_available && requireNamespace("ggplot2", quietly = TRUE) ) # Use a unique temp directory for this vignette to avoid conflicts during R CMD check vignette_temp_dir <- file.path(tempdir(), "visualizing_your_lake_vignette") dir.create(vignette_temp_dir, showWarnings = FALSE, recursive = TRUE) knitr::opts_knit$set(root.dir = vignette_temp_dir) ## ----setup, message=FALSE----------------------------------------------------- library(ducklake) library(dplyr) ## ----create-datalake---------------------------------------------------------- # The ducklake extension only needs installing once per machine: # install_ducklake() attach_ducklake( ducklake_name = "lake_viz_demo", lake_path = vignette_temp_dir ) fleet <- tibble( car_id = 1:5, model = c("Corolla", "Civic", "Model 3", "F-150", "Outback"), mileage = c(42000, 38000, 12000, 67000, 55000) ) with_transaction( create_table(fleet, "fleet"), author = "Data Engineer", commit_message = "Initial fleet load" ) ## ----make-changes------------------------------------------------------------- new_cars <- tibble( car_id = 6:7, model = c("CX-5", "Ioniq 5"), mileage = c(21000, 8000) ) with_transaction( rows_insert(get_ducklake_table("fleet"), new_cars, by = "car_id"), author = "Fleet Manager", commit_message = "Add March arrivals" ) serviced <- tibble( car_id = c(1, 3, 5), mileage = c(42750, 13400, 55900) ) with_transaction( rows_update(get_ducklake_table("fleet"), serviced, by = "car_id"), author = "Fleet Manager", commit_message = "Record spring odometer readings" ) sold <- tibble(car_id = 4L) with_transaction( rows_delete(get_ducklake_table("fleet"), sold, by = "car_id"), author = "Fleet Manager", commit_message = "Remove sold F-150" ) ## ----list-snapshots----------------------------------------------------------- list_table_snapshots("fleet") |> select(snapshot_id, snapshot_time, author, commit_message) ## ----plot-table--------------------------------------------------------------- plot_snapshots("fleet") ## ----plot-changes------------------------------------------------------------- plot_table_changes("fleet") ## ----create-telemetry--------------------------------------------------------- set.seed(42) telemetry <- tibble( reading_id = 1:5000, car_id = sample(1:7, 5000, replace = TRUE), speed = round(runif(5000, 0, 80)), fuel = round(runif(5000, 0, 100)) ) create_table(telemetry, "telemetry") more_readings <- tibble( reading_id = 5001:10000, car_id = sample(1:7, 5000, replace = TRUE), speed = round(runif(5000, 0, 80)), fuel = round(runif(5000, 0, 100)) ) rows_insert(get_ducklake_table("telemetry"), more_readings, by = "reading_id") ## ----flush-------------------------------------------------------------------- flush_inlined_data() ## ----table-info--------------------------------------------------------------- get_table_info() ## ----plot-files--------------------------------------------------------------- plot_table_files() ## ----plot-lake---------------------------------------------------------------- plot_snapshots() ## ----plot-custom-------------------------------------------------------------- plot_snapshots("fleet") + ggplot2::labs(title = "Fleet table audit trail") ## ----cleanup, include = FALSE------------------------------------------------- detach_ducklake("lake_viz_demo", shutdown = TRUE)