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]
      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.2.tar.gz (24.8 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.2-py3-none-any.whl (28.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dbt_timeplus-1.10.2.tar.gz
  • Upload date:
  • Size: 24.8 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.2.tar.gz
Algorithm Hash digest
SHA256 28dae34509b25413abf4ee820b92f807221f8e29c8ac034507bb6cd3f609a336
MD5 42587014702928c64ae8e38c35ec6f44
BLAKE2b-256 475c9ee38d354964fdb6eded38ded5588a244f42c7e6a2ef58f2ae1491ad7b27

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbt_timeplus-1.10.2.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.2-py3-none-any.whl.

File metadata

  • Download URL: dbt_timeplus-1.10.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 95192dd3bf95ce43bf0913cb306c16cb9e06e56d10c10e59490b21609f676e27
MD5 f1d49b0a0efb53b3760c47d2d56f5c2d
BLAKE2b-256 ca7d03bd8c38dbdefa581b670e6219a704d31c98c379fd34c48b28486d7cba61

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbt_timeplus-1.10.2-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