dlt destination for Firebolt (staged Parquet + COPY INTO)
Project description
dlt-firebolt
Community dlt destination for Firebolt.
Load data with filesystem staging (Parquet on S3) and COPY INTO, the same pattern used by dlt's Snowflake and Redshift destinations.
Install
pip install dlt-firebolt
Requires Python 3.10+.
Register the destination once in your project:
import firebolt_dest # registers destination="firebolt"
Prerequisites
- Firebolt service account with access to your database and engine.
- S3 bucket for dlt filesystem staging.
- Firebolt external location for that bucket prefix:
CREATE LOCATION "your_location_name" WITH
SOURCE = 'CLOUD_STORAGE'
URL = 's3://your-bucket/your-prefix/'
CREDENTIALS = (AWS_ROLE_ARN = 'arn:aws:iam::...:role/...');
Set FIREBOLT_S3_LOCATION_NAME (or s3_location_name in secrets) to the exact location name from CREATE LOCATION.
Quick start
import dlt
import firebolt_dest
from firebolt_dest.configuration import make_firebolt_pipeline
@dlt.resource(name="orders", write_disposition="append")
def orders():
yield {"order_id": 1, "customer": "Acme"}
pipeline = make_firebolt_pipeline(
pipeline_name="my_pipeline",
dataset_name="my_dataset",
)
pipeline.run(orders(), loader_file_format="parquet")
Tables are created as {dataset}_{table} (for example my_dataset_orders).
Using .dlt/secrets.toml
pipeline = make_firebolt_pipeline(
pipeline_name="my_pipeline",
dataset_name="my_dataset",
from_secrets=True,
)
Example secrets file:
[destination.firebolt]
s3_location_name = "your_location_name"
s3_prefix = "dlt-landing"
[destination.firebolt.credentials]
host = "YOUR_DATABASE"
database = "YOUR_ENGINE"
username = "YOUR_CLIENT_ID"
password = "YOUR_CLIENT_SECRET"
account_name = "YOUR_ACCOUNT_NAME"
[destination.filesystem]
bucket_url = "s3://your-bucket/dlt-landing/dlt/staging"
See .dlt/secrets.toml.example in the repository for a full template.
Configuration
| Variable | Required | Description |
|---|---|---|
FIREBOLT_CLIENT_ID |
yes | Service account client ID |
FIREBOLT_CLIENT_SECRET |
yes | Service account secret |
FIREBOLT_ACCOUNT_NAME |
yes | Firebolt account name |
FIREBOLT_DATABASE |
yes | Target database |
FIREBOLT_ENGINE |
yes | Engine name |
FIREBOLT_S3_LOCATION_NAME |
yes | Firebolt external location name (must match CREATE LOCATION) |
S3_BUCKET |
yes | Staging bucket |
S3_PREFIX |
no | Key prefix (default: dlt-landing) |
DLT_DATASET_NAME |
no | Default dataset name (default: demo) |
Set credentials via environment variables or .dlt/secrets.toml. Do not commit secrets.
Supported capabilities
| Feature | Support |
|---|---|
| Loader format | Parquet only |
| Staging | Filesystem (S3) required |
append |
Yes |
replace |
truncate-and-insert, insert-from-staging |
merge |
delete-insert (single-table and nested) |
| Transactions | Merge follow-up jobs run in an explicit transaction; ordinary loads use autocommit |
Development
Clone the repository and install in editable mode with dev dependencies:
git clone https://github.com/firebolt-db/dlt-firebolt.git
cd dlt-firebolt
pip install -e ".[dev]"
cp .env.example .env # fill in Firebolt and S3 credentials
pytest -m "not integration"
Optional live integration tests (requires Firebolt, S3, and AWS credentials):
FIREBOLT_RUN_INTEGRATION=1 pytest -m integration -v
License
Apache License 2.0. See LICENSE.
Status
Community package maintained by Firebolt. Not part of core dlt.
- Published on PyPI (
pip install dlt-firebolt) - Append, merge, and replace dispositions
- Nested multi-table merge
- Website integration docs
- Optional listing on dlt community destinations page
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dlt_firebolt-0.1.3.tar.gz.
File metadata
- Download URL: dlt_firebolt-0.1.3.tar.gz
- Upload date:
- Size: 13.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8bf6a115852526512283606e05c8336ab1fde6fdbf31ed00e97adecd3fb642c5
|
|
| MD5 |
a68207f3b48ce1e9ee89d1f43c7aaf0e
|
|
| BLAKE2b-256 |
737d9d068b5e39a7fc8f044af76639ed3888ef3f5658e67a420135bee8d904cc
|
File details
Details for the file dlt_firebolt-0.1.3-py3-none-any.whl.
File metadata
- Download URL: dlt_firebolt-0.1.3-py3-none-any.whl
- Upload date:
- Size: 12.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b21900f0c56ee3f7805d500c5b3da62b6551b33ae97ca322d52c2de1562de912
|
|
| MD5 |
624447bda92fcd4c7e5aee0671b74205
|
|
| BLAKE2b-256 |
ad51145c7ea503fe84b4f91c861ca3a7e405d7337e78557557ac16a2406696cb
|