Skip to main content

SQLBucket

https://travis-ci.org/socialpoint-labs/sqlbucket.svg?branch=master

SQLBucket is a lightweight framework to help write, orchestrate and validate SQL data pipelines. It gives the possibility to set variables and introduces some control flow using the fantastic Jinja2 library. It also implements a very simplistic unit and integration test framework where you can validate the results of your ETL in the form of SQL checks. With SQLBucket, you can apply TDD principles when writing data pipelines.

It can work as a stand alone service, or be part of your workflow manager environment (Airflow, Luigi, ..).

Installing

Install and update using pip:

pip install -U sqlbucket

SQLBucket now works for python 3.10.

A Simple Example

To start working, you need to instantiate your SQLBucket core object with the project_folder parameter. That folder will contain all your SQL ETL. The python file where you create your SQLBucket object is also a good place to instantiate your command line interface, as shown below.

# my_sqlbucket.py
from sqlbucket import SQLBucket


bucket = SQLBucket(projects_folder='projects')


if __name__ == '__main__':
    bucket.cli()

The following command will create your first project in your projects folder.

python my_sqlbucket.py create-project -n my_first_project

For more info on CLI, please refer to its documentations.

Your projects should now look like the structure below:

projects/
    |-- my_first_project/
        |-- config.yaml
        |-- queries/
            |-- query_one.sql
            |-- query_two.sql
        |-- integrity/
            |-- integrity_one.sql

SQLBucket project structure

An SQLBucket project is made of 3 core components: the configuration, the ETL queries and the integrity check queries.

Configuration

The config.yaml is the core of your project. This is where you can define variables at project level, and configure the order your sql queries must be executed. For a better explanations on how to configure variables you can refer to the usage documentation, and also the variables documentation which also describes environment and connections variables.

ETL queries

The queries folder simply contain your SQL queries. You can organize them in the folder structure of your choice. As long as they are in the queries folder, SQLBucket will find them and execute them when configured to do so. See the documentation on how to write SQL with SQLBucket.

Integrity queries

The integrity folder simply contain SQL queries to help you validate your ETL. You can organize them in the folder structure of your choice. The only convention is to return the result of your integrity (True/False) in a field named passed. The main idea is that integrity is done by SQL itself. Check documentation on integrity for a more detailed explanation on testing the integrity of your ETL. We also have a set of common macros that can be helpful to start with.

See below a full example that will actually first run your ETL, and then run your integrity checks for a given database configuration.

from sqlbucket import SQLBucket

connections = {
    'db_demo': 'postgresql://user:password@host:5439/database'
}

bucket = SQLBucket(connections=connections)
project = bucket.load_project(
    project_name='my_first_project',
    connection_name='db_demo',
    variables={'foo': 1}
)

# to run ETL
project.run()

# to run integrity
project.run_integrity()

We recommend setting your connection urls as environment variables for security purposes.

Template project

To get you up to speed, you can create a fork of the SQLBucket template project and start building SQL data pipelines within minutes.

Contributing

For guidance on how to make a contribution to SQLBucket, see the contributing guidelines.

Metadata

Release files for sqlbucket 0.4.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sqlbucket 0.4.4
File Size Uploaded
sqlbucket-0.4.4.tar.gz 15.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sqlbucket 0.4.4
File Interpreter ABI Platform
sqlbucket-0.4.4-py3-none-any.whl Python 3 none any Details

Total release size: 32.3 kB

Release files / sqlbucket-0.4.4.tar.gz

Download URL sqlbucket-0.4.4.tar.gz
Size 15.9 kB
Tags Source
SHA-256 checksum
How to use checksums
12863ce991d8331f523b78c2dc4d28818fc448a13a59bc39ceac4ec0a49b90ee
BLAKE2b-256 checksum
How to use checksums
2baf2868e47db69bdf077b0ad9a9eb7901e525f07a5acda0fbe9629d1396802d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.15

Release files / sqlbucket-0.4.4-py3-none-any.whl

Download URL sqlbucket-0.4.4-py3-none-any.whl
Size 16.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bf3e33c8512f07f04603b38b734d81c2737bcd603d7e8bdaece7c413b775f3e1
BLAKE2b-256 checksum
How to use checksums
b031729f37c060cd08c0fb602a2994eecb0800021cc96c8dc0dc49474946e75a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.15

Release history Release notifications | RSS feed

This release

0.4.4 This release

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.11

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.1.14

2 release files

0.1.13

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page