The SingleStore adapter plugin for dbt
Project description
dbt
dbt enables data analysts and engineers to transform their data using the same practices that software engineers use to build applications.
dbt is the T in ELT. Organize, cleanse, denormalize, filter, rename, and pre-aggregate the raw data in your warehouse so that it's ready for analysis.
dbt-singlestore
dbt-singlestore enables dbt to work with SingleStore.
For more information on using dbt with SingleStore, consult the docs.
Installation
dbt-singlestore is available on PyPI. To install the latest version via pip, run:
pip install dbt-singlestore
Configuring your profile
A sample profile can be found in
sample_profiles.yml. It is a standard profile for SQL data sources in dbt.
In SingleStore, like in MySQL, database and schema denote the same concept. In dbt, and also in a number of DBMS (e.g. Postgres) schema has a different meaning (a namespace within a database). Therefore, schema must be specified in dbt profile, but it won't affect database objects by default. However, it can be used as a prefix for table names, as outlined in dbt docs for SingleStore profile.
Supported Features
| Category | Feature | Supported? | Tested? |
|---|---|---|---|
| Materializations | Table | Yes | Yes |
| View | Yes | Yes | |
| Incremental | Yes | Yes | |
| Ephemeral | Yes | Yes | |
| Resources | Seeds | Yes | Yes |
| Sources | Yes | Yes | |
| Testing - Bespoke | Yes | Yes | |
| Testing - Generic | Yes | Yes | |
| dbt Documentation | Yes | Yes | |
| Snapshots | Yes | Yes | |
| Administration | Hooks | Yes | Yes |
| Models | Custom schema | Limited* | Yes |
-
Custom schemas can be defined in a project models, but they can only serve as a modification to the prefix of the corresponding table names.
-
SSL connection would be automatically established by dbt-singlestore for SingleStore users created with 'Require SSL' flag.
SingleStore-specific table options
Reference tables
SingleStore supports REFERENCE tables, which are replicated across the cluster and are useful for small/dimension tables that are frequently joined.
To create a REFERENCE table from a dbt model, set reference=true on a table materialization:
{{
config(
materialized='table',
reference=true,
)
}}
select ...
When reference=true (default false), the adapter generates CREATE REFERENCE TABLE ... rather than a regular CREATE TABLE ...
Rowstore reference tables
If you want a rowstore reference table, set storage_type='rowstore':
{{
config(
materialized='table',
reference=true,
storage_type='rowstore',
)
}}
select ...
This maps to CREATE ROWSTORE REFERENCE TABLE ...
Restrictions / validation
To match SingleStore semantics, dbt-singlestore enforces:
-
No
shard_keywithreference=true— reference tables don’t use sharding; compilation fails if both are set. -
No
temporary=truewithreference=true— SingleStore does not support temporary reference tables; compilation fails if both are set.
Testing and supported versions
Default dbt tests and jaffle_shop project are used to check the adapter functionality. Development overview has a section "Run tests" which contains instructions on running the tests. Currently, the tests have been successfully run for the following product versions:
| SingleStore | dbt-core | dbt-tests-adapter |
|---|---|---|
| 9.0.9 | 1.10.13 | 1.19.1 |
| 8.9.10 | 1.10.13 | 1.19.1 |
| 8.7.43 | 1.9.9 | 1.17.0 |
| 8.7.43 | 1.8.13 | 1.11.0 |
| 8.5.16 | 1.7.15 | 1.7.15 |
| 8.5.16 | 1.6.13 | 1.6.13 |
| 8.1.1 | 1.6.0 | 1.6.0 |
| 8.1.1 | 1.5.0 | 1.5.0 |
| 8.1.1 | 1.4.0 | 1.4.0 |
| 8.1.1 | 1.3.0 | 1.3.0 |
| 7.8.29 | 1.2.2 | 1.2.2 |
| SingleStore | dbt-core | pytest-dbt-adapter |
|---|---|---|
| 7.8.3 | 1.1.1 | 0.6.0 |
| 7.6.6 | 1.0.1 | 0.6.0 |
| 7.5.12 | 1.0.1 | 0.6.0 |
To use this adapter, SingleStore must be upgraded to the version 8.5 or newer.
Contributors
We thank Doug Beatty who build an adapter for mysql which has been used to build an initial version of this adapter.
Contribute
- Want to help us build
dbt-singlestore? Check out the Contributing Guide.
Project details
Release history Release notifications | RSS feed
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 dbt_singlestore-1.10.0.tar.gz.
File metadata
- Download URL: dbt_singlestore-1.10.0.tar.gz
- Upload date:
- Size: 27.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
26e2900bc648aa98e35aef49a95e184fe93cf1f8af1803ff4929d8ae307e5f19
|
|
| MD5 |
8de97d12bac54fec97059e82be2d31c3
|
|
| BLAKE2b-256 |
423cd020f10cc98c1632b18955125742d7b7cb4763e3c88c0bf29f9593fbc97f
|
File details
Details for the file dbt_singlestore-1.10.0-py3-none-any.whl.
File metadata
- Download URL: dbt_singlestore-1.10.0-py3-none-any.whl
- Upload date:
- Size: 34.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e7c9d4b5d17af09f7e3e07e3900714fd4f33c8d61f1863d64a0aad3780971a3
|
|
| MD5 |
91739c890b5deb4d013b06e2b016a92c
|
|
| BLAKE2b-256 |
23ec74bfc3ff3ed21eadc241b1c05adaee3d02a3a8deaad3081cba0dad4ac823
|