Skip to main content

The Materialize adapter plugin for dbt.

Project description

dbt-materialize

dbt adapter for Materialize.

For a complete step-by-step guide on how to use dbt and Materialize, check the documentation.

Installation

dbt-materialize is available on PyPI. To install the latest version via pip (optionally using a virtual environment), run:

python3 -m venv dbt-venv         # create the virtual environment
source dbt-venv/bin/activate     # activate the virtual environment
pip install dbt-materialize      # install the adapter

Requirements

dbt-materialize requires Materialize v0.68.0+.

Configuring your profile

To connect to a Materialize instance, use the reference profile configuration in your connection profile:

dbt-materialize:
  target: dev
  outputs:
    dev:
      type: materialize
      threads: 1
      host: [host]
      port: [port]
      user: [user@domain.com]
      pass: [password]
      dbname: [database]
      schema: [dbt schema]
      cluster: [cluster] # default 'quickstart'
      sslmode: require
      keepalives_idle: 0 # default 0
      retries: 1  # default 1 retry on error/timeout when opening connections
      search_path: [optional, override the default search_path]

Complete sample profiles can be found in sample_profiles.yml.

Supported Features

Materializations

Type Supported? Details
source YES Creates a source.
view YES Creates a view.
materializedview YES (Deprecated) Creates a materialized view.
materialized_view YES Creates a materialized view. The materializedview legacy materialization name is supported for backwards compatibility.
table YES Creates a materialized view. (Actual table support pending #5266.)
sink YES Creates a sink.
ephemeral YES Executes queries using CTEs.
incremental NO Use the materialized_view materialization instead! dbt's incremental models are valuable because they only spend your time and money transforming your new data as it arrives. Luckily, this is exactly what Materialize's materialized views were built to do! Better yet, our materialized views will always return up-to-date results without manual or configured refreshes. For more information, check out our documentation.

Indexes

Use the indexes option to define a list of indexes on source, view, table or materialized view materializations. Each Materialize index can have the following components:

Component Value Description
columns list One or more columns on which the index is defined. To create an index that uses all columns, use the default component instead.
name string The name for the index. If unspecified, Materialize will use the materialization name and column names provided.
cluster string The cluster to use to create the index. If unspecified, indexes will be created in the cluster used to create the materialization.
default bool Default: False. If set to True, creates a default index that uses all columns.

Additional macros

We provide a materialize-dbt-utils package with Materialize-specific implementations of dispatched macros from dbt-utils. To use this package in your dbt project, check the latest installation instructions in dbt Hub.

Hooks

Supported.

Custom Schemas

Supported. Custom schemas in dbt might behave differently than you'd expect, so make sure to read the documentation!

Sources

You can instruct dbt to create a dbt source in Materialize using the custom source materialization, which allows for injecting the complete source statement into your .sql file.

source freshness is not supported because using Materialize, your sources will always be fresh.

Documentation

dbt docs is supported, as well as --persist-docs.

Testing

dbt test is supported.

If you set the optional --store-failures flag or store-failures config, dbt will save the results of a test query to a materialized_view. To use a view instead, use the store_failures_as config.

These objects will be created in a schema suffixed or named dbt_test__audit by default. Change this value by setting a schema config. If both store_failures and store_failures_as are specified, store_failures_as takes precedence.

Snapshots

Not supported. Support is not planned for the near term.

Contributors

A huge thank you to Josh Wills, who created the original version of this adapter. 🤠

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-materialize-1.7.3.tar.gz (21.2 kB view hashes)

Uploaded source

Supported by

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