Query 'Azure Data Lake Storage Gen2' with 'DuckDB'
Overview
Provides convenience utilities for using 'DuckDB' directly over datasets stored in 'Azure Data Lake Storage Gen2' (ADLS Gen2, 'abfss://'). Opens connections configured for Azure-backed 'Delta Lake' and 'Parquet' data, registers Azure credentials as 'DuckDB' secrets, and supports optional repository mirrors for restricted networks. Integrates well with 'DBI' for SQL workflows and with 'dplyr' and 'dbplyr' for lazy table queries.
- New
collect_arrow()andstream_arrow()return the result of a lazy Azure table as Arrow data, either all at once or in batches, without converting it to a data frame. They need the nanoarrow package. The new "Arrow output" article on the package website shows how to use them with arrow. - New "DuckDB connection settings" article on the package website explains which DuckDB settings to change for shared servers, containers and large queries.
- quak now requires duckdb 1.5.4 or later and DBI 1.2.0 or later, the first releases with the DBI Arrow interface. It also declares R 4.1.0 or later, which it already needed.
- The extension repository check now runs when quak is attached rather than when it is loaded. It reports through startup messages, which
suppressPackageStartupMessages()silences. It gives up on a repository after 10 seconds without a connection, and never stops quak from loading.
Show all changes in 0.1.1Hide the rest of the changes in 0.1.1
Bug fixes
- The default extension cache directory is now worked out on the machine where quak runs. It was worked out when the package was built, so binary packages pointed it at the build machine's home directory, for example
/home/builder/.cache/R/quak. When DuckDB's ownINSTALLfailed, the manual install then stopped with "permission denied" (#15). tbl_delta(),load_delta(),az_delta_files()and the Delta readers behindaz_schema()andaz_glimpse()work again. They passed thedeltaextension the account-host URL form (abfss://account.dfs.core.windows.net/container/path), which it rejects with "URL did not match any known pattern". They now passabfss://container@account.dfs.core.windows.net/path. Delta tables never match an account-scoped secret, so use an unscoped secret for them (#18).load_delta()andtbl_delta()no longer accepttimestamp. DuckDB'sdeltaextension accepts aTIMESTAMPattach option but ignores it, so callers silently received the latest snapshot instead of a historical one. Supplyingtimestampnow raises an error; useversion, which DuckDB does honour (#2).- Account-scoped Azure secrets are now scoped to the account's actual hosts (
abfss://<account>.dfs.core.windows.net/andaz://<account>.blob.core.windows.net/) rather thanabfss://<account>/, which matched no real URL. Account secrets registered byaz_set_token_secret(),az_set_sp_secret()andaz_set_chain_secret()were therefore never selected, letting queries fall back to another secret or to anonymous access (#3). - Azure URLs written as
abfss://container@account/pathare now normalised toabfss://account.dfs.core.windows.net/container/path. The former is not a URL form DuckDB supports, and no account-scoped secret could match it (#3). az_copy_to()andaz_write_parquet()now reject a lazy table that belongs to a different connection thanconn, instead of rendering its SQL and running it againstconn— which silently exported the wrong rows when both connections held a table of the same name (#4).load_dataset()now forwards reader options toload_csv()andload_json(). Valid options such asheaderandmaximum_object_sizewere rejected before reaching the loader, making the dispatcher less capable than the loaders it wraps (#5).
From NEWS.md in the release
Install
Health
ERRORtestsr-devel-linux-x86_64-fedora-gcc
Running ‘testthat.R’ [17s/48s]
Running the tests in ‘tests/testthat.R’ failed.
Complete output:
> # This file is part of the standard setup for testthat.
> # It is recommended that you do not modify it.
> #
> # Where should you do additional test configuration?
> # Learn more about the roles of various files in:
> # * https://r-pkgs.org/testing-design.html#sec-tests-files-overview
> # * https://testthat.r-lib.org/articles/special-files.html
>
> library(testthat)
> library(quak)
>
> test_check("quak")
duckdb is storing downloaded extensions and secrets under ~/.duckdb:
i /data/localhost/ripley/.duckdb
This persists across sessions and is shared with the DuckDB CLI and other clients.
i Run duckdb(shared_home = FALSE) to use a temporary directory instead.
i See ?duckdb_storage for details and alternatives.
duckdb is storing downloaded extensions and secrets under ~/.duckdb:
i /data/localhost/ripley/.duckdb
This persists across sessions and is shar
...[truncated]...
════════════════
• On CRAN (21): 'test-azure.R:2:3', 'test-azure.R:22:3', 'test-azure.R:39:3',
'test-azure.R:56:3', 'test-azure.R:67:3', 'test-azure.R:91:3',
'test-azure.R:109:3', 'test-azure.R:128:3', 'test-azure.R:139:3',
'test-azure.R:185:3', 'test-azure.R:208:3', 'test-datasets.R:234:3',
'test-extensions.R:2:3', 'test-extensions.R:12:3', 'test-extensions.R:22:3',
'test-extensions.R:39:3', 'test-extensions.R:51:3',
'test-extensions.R:302:3', 'test-extensions.R:338:3',
'test-extensions.R:352:3', 'test-extensions.R:367:3'
• azure extension not installed (1): 'test-tables.R:41:3'
══ Failed tests ════════════════════════════════════════════════════════════════
── Failure ('test-connection.R:104:3'): az_tune is quiet and wraps DuckDB setting failures ──
Expected `az_tune(conn, transport = "curl")` to throw a error with class <quak_error_azure_tune_failed>.
[ FAIL 1 | WARN 0 | SKIP 22 | PASS 327 ]
Error:
! Test failures.
Execution haltedERRORwhether package can be installedr-devel-linux-x86_64-fedora-clang
Installation failed. See ‘/data/localhost/ripley/R/packages/tests-clang/quak.Rcheck/00install.out’ for details.
- ERROR11 OK, 2 ERROR2026-10-24
- OK13 OK2026-09-30
- ERROR12 OK, 1 ERROR2026-09-04
- OK13 OK2026-08-05
- NOTE12 OK, 1 NOTE2026-08-01
Show 1 earlier changeHide 1 earlier change
- OK8 OK2026-06-10
Documentation
The repository also keeps web-only articles.
- Help pages
- 61 (18 internal)includes a package overview page
- Examples that run
- 33%14 run in a plain check · 28 never run
- Exported functions with examples
- 100%
- Documented parameters
- 100%
- Return-value docs
- 100%
- Help pages citing references
- 0%
Downloads
Repository
- PRs merged (all time)
- 100%
- Median days to close, 50 most recently updated closed issues
- 14
- Median days to close, 50 most recently updated closed PRs
- 0
Releases over time
Issues over time
PRs over time
Commits over time
Commit identities over time
11 development-tooling and community-health practices detected across 5 families in the upstream repository
Checks run against github.com/pedrobtz/quak on 2026-10-21.
The R CMD check workflow runs on Linux, macOS and Windows, and on R-devel
GitHub Pages site last deployed 2026-09-29 · The repository has a site deploy workflow
pkgdown site last built 2026-09-29
Show all practicesHide 1 practice
This repository shows signs of AI coding tools.
- Claude Codefirst seen on or before 2026-06-04Seen in the repository: CLAUDE.mdNamed in .Rbuildignore: .claude, CLAUDE.mdPull request it wrote: opened by a project memberCommits: 1 by its own account · at least 10 crediting it in the message
- Claude Opus 5.57 commits · Sep 2026
- Claude Fable 5.12 commits · Sep 2026
- Claude Opus 51 commit · Sep 2026
Dependencies
Code & Tests
People & History
Pick two releases to compare their code metrics.
- 0.1.1Latest
- 0.1.02026-06-09
- RR 4.6.0 released · 2026-04-24
Package metadata
- First published
- 2026-06-09
- Total releases
- 2 / 1 yrs
- License
- MIT + file LICENSE OSI
- Minimum R
- ≥ 4.1.0
- Download size
- 65 KB
Cite
Cite this package
Run in R for the authors' preferred citation:
citation("quak")This package has no citation file, so citation() returns this entry built from DESCRIPTION.
Cite the R Observatory
For a number measured here: a download total, a coverage figure, an archival date.
From data release v2026-10-24, which the citation names so these numbers can be found later. More on citing and the projects behind them.