Skip to main content

DBT adapter for YDB

Project description

dbt logo

dbt-ydb

dbt-ydb is a plugin for dbt that provides support for working with YDB. dbt-ydb adapter is in preview stage and does not currently support all dbt features. The sections below list the supported features and known limitations.

Installation

To install plugin, execute the following command:

pip install dbt-ydb

Supported features

  • Table materialization
  • View materialization
  • Seeds
  • Docs generate
  • Tests
  • Incremental materializations (merge strategy only)
  • Snapshots
  • Cross-database (dbt "utils") macros: dateadd, datediff, date_trunc, last_day, hash, split_part, concat, length, position, right, replace, bool_or, any_value, safe_cast, cast_bool_to_text, escape_single_quotes, type_*, except, intersect, array_construct, array_append, array_concat (YDB List<T>)

Limitations

  • datediff on sub-second dateparts (microsecond/millisecond) requires Timestamp inputs; Date/Datetime columns carry only second precision.

  • type_float / type_numeric / type_boolean / type_timestamp macros are available, but casting arbitrary string literals to these types follows YQL rules (e.g. a Double column cannot be a primary key).

  • YDB does not support CTE

  • YDB requires a primary key to be specified for its tables. See the configuration section for instructions on how to set it.

  • source() macro requires you to specify a schema. Use / if your source is in root folder.

Usage

Profile Configuration

To configure YDB connection, fill profile.yml file as below:

profile_name:
  target: dev
  outputs:
    dev:
      type: ydb
      host: [localhost] # YDB host
      port: [2136] # YDB port
      database: [/local] # YDB database
      schema: [<empty string>] # Optional subfolder for DBT models
      secure: [False] # If enabled, grpcs protocol will be used
      root_certificates_path: [<empty string>] # Optional path to root certificates file

      # Static Credentials
      username: [<empty string>]
      password: [<empty string>]

      # Access Token Credentials
      token: [<empty string>]

      # Service Account Credentials
      service_account_credentials_file: [<empty string>]

Model Configuration

View

Option Description Required Default

Table

Option Description Required Default
primary_key Primary key expression to use during table creation yes
store_type Type of table. Available options are row and column no row
partition_by Columns for the PARTITION BY <method> (...) clause. Column-oriented tables only (store_type='column') no
partition_method Partitioning method for partition_by. Currently YDB supports only hash no hash
auto_partitioning_by_size Enable automatic partitioning by size. Available options are ENABLED and DISABLED no
auto_partitioning_by_load Enable automatic partitioning by load. Available options are ENABLED and DISABLED no
auto_partitioning_partition_size_mb Partition size in megabytes for automatic partitioning no
auto_partitioning_min_partitions_count Minimum number of partitions no
auto_partitioning_max_partitions_count Maximum number of partitions no
uniform_partitions Number of pre-created uniform partitions (Uint32/Uint64 keys) no
partition_at_keys Explicit partition boundary keys, e.g. (100, 200, 300) no
ttl Time-to-live (TTL) expression for automatic data expiration no

Incremental

Option Description Required Default
incremental_strategy Strategy of incremental materialization. Current adapter supports only merge strategy, which will use YDB's UPSERT operation. no default
primary_key Primary key expression to use during table creation yes
store_type Type of table. Available options are row and column no row
partition_by Columns for the PARTITION BY <method> (...) clause. Column-oriented tables only (store_type='column') no
partition_method Partitioning method for partition_by. Currently YDB supports only hash no hash
auto_partitioning_by_size Enable automatic partitioning by size. Available options are ENABLED and DISABLED no
auto_partitioning_by_load Enable automatic partitioning by load. Available options are ENABLED and DISABLED no
auto_partitioning_partition_size_mb Partition size in megabytes for automatic partitioning no
auto_partitioning_min_partitions_count Minimum number of partitions no
auto_partitioning_max_partitions_count Maximum number of partitions no
uniform_partitions Number of pre-created uniform partitions (Uint32/Uint64 keys) no
partition_at_keys Explicit partition boundary keys, e.g. (100, 200, 300) no
ttl Time-to-live (TTL) expression for automatic data expiration no
Example table configuration
{{ config(
    primary_key='id, created_at',
    store_type='row',
    auto_partitioning_by_size='ENABLED',
    auto_partitioning_partition_size_mb=256,
    ttl='Interval("P30D") on created_at'
) }}

select
    id,
    name,
    created_at
from {{ ref('source_table') }}
Example column-oriented table with partitioning
{{ config(
    primary_key='id',
    store_type='column',
    partition_by='id',
    auto_partitioning_min_partitions_count=4
) }}

select id, name, created_at from {{ ref('source_table') }}

Seed

Option Description Required Default
primary_key Primary key expression to use during table creation no The first column of CSV will be used as default.

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_ydb-0.0.15.tar.gz (22.7 kB view details)

Uploaded Source

Built Distribution

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

dbt_ydb-0.0.15-py3-none-any.whl (29.6 kB view details)

Uploaded Python 3

File details

Details for the file dbt_ydb-0.0.15.tar.gz.

File metadata

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

File hashes

Hashes for dbt_ydb-0.0.15.tar.gz
Algorithm Hash digest
SHA256 07a3460848a2711786455bf8f4d79f8fb251c463637c1b99cd639a1ea1fc1bf2
MD5 216767d1ad96c9744b7f802f450e3193
BLAKE2b-256 db86f53256de276233d738046dfddc9e358f9d55bae07b19b20834974852e277

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbt_ydb-0.0.15.tar.gz:

Publisher: python-publish.yml on ydb-platform/dbt-ydb

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_ydb-0.0.15-py3-none-any.whl.

File metadata

  • Download URL: dbt_ydb-0.0.15-py3-none-any.whl
  • Upload date:
  • Size: 29.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_ydb-0.0.15-py3-none-any.whl
Algorithm Hash digest
SHA256 93b63d855b4f1760130dfa101246989d076c6b8279660f9586e01751114d61d0
MD5 881e290b54b166b9326ba0c2ced92197
BLAKE2b-256 aabc208410f3b51495b7235d96cde38f2aaad39e46a780275e8aaca77421edc5

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbt_ydb-0.0.15-py3-none-any.whl:

Publisher: python-publish.yml on ydb-platform/dbt-ydb

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