dbt adapter for SingleStore.
dbt-singlestore is available on PyPI. To install the latest version via pip, run:
pip install dbt-singlestore
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.
| 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.
Default dbt test suite is 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 | 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 7.5 or newer.
- Fixed failing materialization with
unique_key. - Fixed changing a column's data type during incremental materialization.
- Added support for
primary_key,sort_key,shard_key,unique_table_key,charset,collation,storage_type,indexesoptions for creating SingleStore tables intablematerialization.
We thank Doug Beatty who build an adpater for mysql which has been used to build an initial version of this adapter.