Skip to main content

SQLMesh extension for generating Cube semantic layer configurations

Project description

SQLMesh logo

SQLMesh is a next-generation data transformation framework designed to ship data quickly, efficiently, and without error. Data teams can efficiently run and deploy data transformations written in SQL or Python with visibility and control at any size.

It is more than just a dbt alternative.

Architecture Diagram

Core Features

SQLMesh Plan Mode

Get instant SQL impact analysis of your changes, whether in the CLI or in SQLMesh Plan Mode

Virtual Data Environments
  • Create isolated development environments without data warehouse costs
  • Plan / Apply workflow like Terraform to understand potential impact of changes
  • Easy to use CI/CD bot for true blue-green deployments
Efficiency and Testing

Running this command will generate a unit test file in the tests/ folder: test_stg_payments.yaml

Runs a live query to generate the expected output of the model

sqlmesh create_test tcloud_demo.stg_payments --query tcloud_demo.seed_raw_payments "select * from tcloud_demo.seed_raw_payments limit 5"

# run the unit test
sqlmesh test
MODEL (
  name tcloud_demo.stg_payments,
  cron '@daily',
  grain payment_id,
  audits (UNIQUE_VALUES(columns = (
      payment_id
  )), NOT_NULL(columns = (
      payment_id
  )))
);

SELECT
    id AS payment_id,
    order_id,
    payment_method,
    amount / 100 AS amount, /* `amount` is currently stored in cents, so we convert it to dollars */
    'new_column' AS new_column, /* non-breaking change example  */
FROM tcloud_demo.seed_raw_payments
test_stg_payments:
model: tcloud_demo.stg_payments
inputs:
    tcloud_demo.seed_raw_payments:
      - id: 66
        order_id: 58
        payment_method: coupon
        amount: 1800
      - id: 27
        order_id: 24
        payment_method: coupon
        amount: 2600
      - id: 30
        order_id: 25
        payment_method: coupon
        amount: 1600
      - id: 109
        order_id: 95
        payment_method: coupon
        amount: 2400
      - id: 3
        order_id: 3
        payment_method: coupon
        amount: 100
outputs:
    query:
      - payment_id: 66
        order_id: 58
        payment_method: coupon
        amount: 18.0
        new_column: new_column
      - payment_id: 27
        order_id: 24
        payment_method: coupon
        amount: 26.0
        new_column: new_column
      - payment_id: 30
        order_id: 25
        payment_method: coupon
        amount: 16.0
        new_column: new_column
      - payment_id: 109
        order_id: 95
        payment_method: coupon
        amount: 24.0
        new_column: new_column
      - payment_id: 3
        order_id: 3
        payment_method: coupon
        amount: 1.0
        new_column: new_column
Level Up Your SQL Write SQL in any dialect and SQLMesh will transpile it to your target SQL dialect on the fly before sending it to the warehouse. Transpile Example
  • Debug transformation errors before you run them in your warehouse in 10+ different SQL dialects
  • Definitions using simply SQL (no need for redundant and confusing Jinja + YAML)
  • See impact of changes before you run them in your warehouse with column-level lineage

For more information, check out the website and documentation.

Getting Started

Install SQLMesh through pypi by running:

mkdir sqlmesh-example
cd sqlmesh-example
python -m venv .env
source .env/bin/activate
pip install sqlmesh
sqlmesh init duckdb # get started right away with a local duckdb instance

Follow the quickstart guide to learn how to use SQLMesh. You already have a head start!

Follow this example to learn how to use SQLMesh in a full walkthrough.

Optional Extensions

SQLMesh supports several optional extensions that can be installed separately:

  • sqlmesh[athena]: Support for Amazon Athena
  • sqlmesh[azuresql]: Support for Azure SQL
  • sqlmesh[bigquery]: Support for Google BigQuery
  • sqlmesh[clickhouse]: Support for ClickHouse
  • sqlmesh[cube]: Support for generating Cube semantic layer configurations
  • sqlmesh[databricks]: Support for Databricks

Join Our Community

Together, we want to build data transformation without the waste. Connect with us in the following ways:

Contribution

Contributions in the form of issues or pull requests (from fork) are greatly appreciated.

Read more on how to contribute to SQLMesh open source.

Watch this video walkthrough to see how our team contributes a feature to SQLMesh.

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

sqlmesh_cube-0.1.dev3089.tar.gz (28.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sqlmesh_cube-0.1.dev3089-py3-none-any.whl (657.1 kB view details)

Uploaded Python 3

File details

Details for the file sqlmesh_cube-0.1.dev3089.tar.gz.

File metadata

  • Download URL: sqlmesh_cube-0.1.dev3089.tar.gz
  • Upload date:
  • Size: 28.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.9.4

File hashes

Hashes for sqlmesh_cube-0.1.dev3089.tar.gz
Algorithm Hash digest
SHA256 2674385dad8ce983e5dd7aa3167776418cf76f0106913c1bcf8baa417b01e3b1
MD5 c0b27b13a1bf404da026a7aed545b1de
BLAKE2b-256 e77125df8baa7e0db2c24521355614065d60b14a9cd22b062c6e85f0fb2cc4a0

See more details on using hashes here.

File details

Details for the file sqlmesh_cube-0.1.dev3089-py3-none-any.whl.

File metadata

File hashes

Hashes for sqlmesh_cube-0.1.dev3089-py3-none-any.whl
Algorithm Hash digest
SHA256 1e4e6fc770abf563f8f3054e5c4a537148e8ef1d24b07714e8a442281c574943
MD5 224257832a1db02f7c83a3195eb9e46e
BLAKE2b-256 8f3ddfa04ae678fb49216acd497a6e460d0d2ec5fe5cba07f3225932b70bf9ec

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page