Creates a new location object that stores the connection details and credentials for a DuckLake data source. Instead of passing the catalog connection string and storage credentials to READ_DUCKLAKE and LIST_DUCKLAKE_FILES on every call, you reference the location by name.
A DuckLake location captures:
- The DuckLake catalog connection string — a PostgreSQL connection string that points to the catalog database. This is encrypted at rest because it usually contains a password.
- An optional S3 endpoint and storage credentials for the Parquet data files. Omit these when the data files live on a local filesystem.
- An optional default schema and table, so callers can reference the location without repeating them.
This document captures the syntax and examples for DuckLake locations. For a comprehensive guide to location objects, see LOCATION objects. For location syntax in general, see CREATE LOCATION.
DuckLake support is experimental and disabled by default. Set enable_ducklake = true to use it, and expect the behavior to change. Only DuckLake catalogs hosted on PostgreSQL are supported.
Topics:
Syntax
Parameters
Common parameters
DuckLake parameters
Credentials
CREDENTIALS accepts AWS authentication fields in one of two combinations: key-based (AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY, optionally with AWS_SESSION_TOKEN) or role-based (AWS_ROLE_ARN, optionally with AWS_ROLE_EXTERNAL_ID). You must provide either the access-key pair or AWS_ROLE_ARN, and AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY must be supplied together.
Catalog-level and table-level locations
A DuckLake location can describe a whole catalog or a single table, depending on how much you embed in it.
-
Catalog-level location. Set only
CATALOG (plus ENDPOINT and CREDENTIALS if the data is in object storage). Callers supply SCHEMA and TABLE at the call site, so one location serves every table in the catalog.
-
Table-level location. Also set
SCHEMA and TABLE. Callers can then reference the location with no further arguments.
When a location defines a SCHEMA or TABLE and the caller also passes one, the two values must match. Otherwise the query fails with a mismatch error.
Examples
Local catalog with on-disk data files
When the catalog is a local PostgreSQL instance and the Parquet files are on a local filesystem (for example, a Firebolt Core deployment), CATALOG is the only required field — no endpoint or credentials are needed:
Object storage with access key and secret
Object storage with a session token
Object storage with a role
MinIO endpoint
DuckLake data files can be served from any S3-compatible store, such as MinIO: