Skip to main content

The Clickhouse plugin for dbt (data build tool)

Project description

clickhouse dbt logo

build

dbt-clickhouse

This plugin ports dbt functionality to Clickhouse.

We do not test over older versions of Clickhouse. The plugin uses syntax that requires version 22.1 or newer.

Installation

Use your favorite Python package manager to install the app from PyPI, e.g.

pip install dbt-clickhouse

Supported features

  • Table materialization
  • View materialization
  • Incremental materialization
  • Seeds
  • Sources
  • Docs generate
  • Tests
  • Snapshots
  • Ephemeral materialization

Usage Notes

Database

The dbt model database.schema.table is not compatible with Clickhouse because Clickhouse does not support a schema. So we use a simple model schema.table, where schema is the Clickhouse's database. Please, don't use default database!

Model Configuration

Option Description Required?
engine The table engine (type of table) to use when creating tables Optional (default: MergeTree())
order_by A tuple of column names or arbitrary expressions. This allows you to create a small sparse index that helps find data faster. Optional (default: tuple())
partition_by A partition is a logical combination of records in a table by a specified criterion. The partition key can be any expression from the table columns. Optional
unique_key A tuple of column names that uniquely identify rows. For more details on uniqueness constraints, see here. Optional
inserts_only This property is relevant only for incremental materialization. If set to True, incremental updates will be inserted directly to the target table without creating intermediate table. This option has the potential of significantly improve performance and avoid memory limitations on big updates. Optional
settings A dictionary with custom settings for INSERT INTO and CREATE AS SELECT queries. Optional

Example Profile

your_profile_name:
  target: dev
  outputs:
    dev:
      type: clickhouse
      schema: [database name]

      # optional
      driver: [http] # http or native.  If not set will autodetermine base one port
      port: [port]  # default 8123
      user: [user] # default 'default'
      host: [db.clickhouse.com] # default localhost
      password: [password] # default ''
      verify: [verify] # default True
      secure: [secure] # default False
      connect_timeout: [10] # default 10 seconds.
      custom_settings: {} # Custom seetings for the connection - default is empty.

Running Tests

This adapter passes all of dbt basic tests as presented in dbt's official docs: https://docs.getdbt.com/docs/contributing/testing-a-new-adapter#testing-your-adapter.

Note: The only feature that is not supported and not tested is Ephemeral materialization.

Tests running command: pytest tests/integration

You can customize a few test params through environment variables. In order to provide custom params you can create test.env file under root (remember not to commit this file!) and define the following env variables inside:

  1. DBT_CH_TEST_HOST - Default=localhost
  2. DBT_CH_TEST_USER - your ClickHouse username. Default=default
  3. DBT_CH_TEST_PASSWORD - your ClickHouse password. Default=''
  4. DBT_CH_TEST_PORT - ClickHouse client port. Default=8123
  5. DBT_CH_TEST_DATABASE - Explicit database (dbt 'schema') used to execute queries for test setup. Defaults to ClickHouse user default. Note that each test will actually generate a new random database.
  6. DBT_CH_TEST_DB_ENGINE - Database engine used to create schemas. Defaults to '' (server default)
  7. DBT_CH_TEST_USE_DOCKER - Identify whether to run clickhouse-server docker image (see tests/docker-compose.yml). Default=False. Set it to True if you'd like to raise a docker image (assuming docker-compose is installed in your machine) during tests that launches a clickhouse-server. Note: If you decide to run a docker image you should set DBT_CH_TEST_PORT to 10900 too.

Original Author

ClickHouse wants to thank @silentsokolov for creating this connector and for their valuable contributions.

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

dbt-clickhouse-1.2.1.tar.gz (26.2 kB view details)

Uploaded Source

Built Distribution

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

dbt_clickhouse-1.2.1-py2.py3-none-any.whl (31.7 kB view details)

Uploaded Python 2Python 3

File details

Details for the file dbt-clickhouse-1.2.1.tar.gz.

File metadata

  • Download URL: dbt-clickhouse-1.2.1.tar.gz
  • Upload date:
  • Size: 26.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.14

File hashes

Hashes for dbt-clickhouse-1.2.1.tar.gz
Algorithm Hash digest
SHA256 e54dba671d577ae2ac438f79765ebf7caae41c2b4091e598a7594ee3d95c9d5d
MD5 c68083d0e69adc99df6d2ab2bc00db67
BLAKE2b-256 7375d9e68c0d05437d5429b069f2760981328c26f578d860c45afd57f62e8b03

See more details on using hashes here.

File details

Details for the file dbt_clickhouse-1.2.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for dbt_clickhouse-1.2.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 70d3e8b302a92fe0ef5740dda4ffd65e57a2e0ff9c1bb2e55d6c5d55951fdd6c
MD5 03e54fd75f04b7c085970ff4b76e6aa8
BLAKE2b-256 f0896b17d4acbbf3f97730d07c55887328fbaac55ad740848a5c45f658f8f05b

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