Skip to main content

The Timeplus (Proton) plugin for dbt (data build tool)

Project description

dbt logo

dbt-timeplus

This plugin ports dbt functionality to Timeplus Proton.

Installation

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

pip install dbt-timeplus

Development

Follow the dbt Documentation to install dbt with pip.

python3.10 -m venv proton-dbt-env
source proton-dbt-env/bin/activate
# Installs matching versions for local dev/tests
pip install -r dev_requirements.txt

Then run pip install -e . to install the current dev code.

Testing:

  • pytest tests/unit runs fast unit tests (no DB needed).
  • Functional tests require a running Timeplus endpoint. Export env vars or use tests/test.env:
    • DBT_TEST_HOST (default localhost)
    • DBT_TEST_PORT (default 8463)
    • DBT_TEST_USER (default default)
    • DBT_TEST_PASSWORD (default empty)
    • DBT_TEST_SCHEMA (default default)
  • Run pytest tests/functional for functional tests.
  • Run pytest tests/integration/timeplus.dbtspec for integration tests.

External sinks (Kafka / ClickHouse)

  • If you run Kafka/ClickHouse locally (e.g., via Docker Compose), set the relevant environment variables for your setup, then run pytest -k external to execute only those tests. See tests/test.env.sample for the full variable list.

Note: host:port values depend on your environment and are not enforced by the adapter. Use the ports your services expose.

Typical defaults:

  • ClickHouse native: 9000 (plain), 9440 (TLS). HTTP: 8123/8443.
  • Kafka brokers: 9092 (plain), others depending on your deployment.

Tip: copy tests/test.env.sample to tests/test.env and edit for local runs (pytest-dotenv loads it automatically).

Compatibility

  • Python: 3.10, 3.11, 3.12
  • dbt-core: 1.10.x (pinned to 1.10.13)
  • proton-driver: >=0.2.13

Supported features

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

Usage Notes

Database

The dbt model database.schema.table is not compatible with Timeplus because Timeplus does not support a schema. So we use a simple model schema.table, where schema is the Timeplus database.

Bounded vs streaming queries

Timeplus streams are streaming by default. To avoid long-running queries in dbt models and tests, wrap streaming sources with table(...) when selecting, for example:

select window_end, cid, count() as cnt
from tumble(table(car_live_data), 1s)
group by window_end, cid

This produces a bounded snapshot for deterministic builds.

Model Configuration

Option Description Default
engine Stream engine used when creating streams Stream(1, 1, rand())
order_by Column(s) or expression(s) used for ordering to_start_of_hour(_tp_time)
partition_by Partition expression for stream to_YYYYMMDD(_tp_time)

Example Profile

your_profile_name:
  target: dev
  outputs:
    dev:
      type: timeplus
      schema: [database name] # default default
      host: [db.url.timeplus] # default localhost

      # optional
      port: [port]  # default 8463
      user: [user]
      password: [abc123]
      cluster: [cluster name]
      verify: [verify] # default False
      secure: [secure] # default False
      connect_timeout: [10] # default 10
      send_receive_timeout: [300] # default 300
      sync_request_timeout: [5] # default 5
      compress_block_size: [1048576] # default 1048576
      compression: ['lz4'] # default '' (disable)

Materialized views

Create a materialized view that writes into a target stream and optionally applies settings:

{{ config(materialized='materialized_view', into='mv_target', settings='checkpoint_interval=5') }}
select window_start as win_start, s, sum(i) as total
from tumble(table(rd), 2s)
group by window_start, s

External sinks (Kafka / ClickHouse)

The adapter includes tests/examples for Kafka and ClickHouse sinks. Export the environment variables shown above and run pytest -k external to execute only those tests.

Release and versioning

  • Package name: dbt-timeplus (renamed from dbt-proton).
  • Adapter version mirrors dbt minor (1.10.*).
  • The bundled macro package version in dbt/include/timeplus/dbt_project.yml is kept in sync as a convention.

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_timeplus-1.10.0.tar.gz (24.9 kB view details)

Uploaded Source

Built Distribution

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

dbt_timeplus-1.10.0-py3-none-any.whl (28.6 kB view details)

Uploaded Python 3

File details

Details for the file dbt_timeplus-1.10.0.tar.gz.

File metadata

  • Download URL: dbt_timeplus-1.10.0.tar.gz
  • Upload date:
  • Size: 24.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dbt_timeplus-1.10.0.tar.gz
Algorithm Hash digest
SHA256 fc37e17751931d6ec888e95ba677522e2d46fad28dfd7cbd9a82b9986029712a
MD5 777f8543e35b00b1e1fb99d3d1a80ac4
BLAKE2b-256 2eba51dcb2bc8362cc3ec8d2ee32e1b2d96117cafd31e717002924e11f519025

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbt_timeplus-1.10.0.tar.gz:

Publisher: publish.yml on timeplus-io/dbt-timeplus

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dbt_timeplus-1.10.0-py3-none-any.whl.

File metadata

  • Download URL: dbt_timeplus-1.10.0-py3-none-any.whl
  • Upload date:
  • Size: 28.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dbt_timeplus-1.10.0-py3-none-any.whl
Algorithm Hash digest
SHA256 688160e603a29512eff762d5c81baace763024ed6f1d57a36bdb34081bc7e462
MD5 1fcc1533eed18a0e96ab8f4bbcfa14fd
BLAKE2b-256 9eccfb1867e1c24b4f2c89723e451b9100cd4c5e7b26466e13738e8edc97511b

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbt_timeplus-1.10.0-py3-none-any.whl:

Publisher: publish.yml on timeplus-io/dbt-timeplus

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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