{"id":5897,"library":"dbt-vertica","title":"dbt-vertica","description":"dbt-vertica is the official adapter plugin for dbt (data build tool) that enables dbt to connect and transform data in Vertica databases. It leverages `vertica-python` for database connectivity and supports various dbt materializations and features. The library is actively maintained by Vertica, with the current version being 1.8.5, and follows the release cadence of dbt Core.","status":"active","version":"1.8.5","language":"en","source_language":"en","source_url":"https://github.com/vertica/dbt-vertica/","tags":["dbt","data-transformation","vertica","sql-etl","data-warehousing"],"install":[{"cmd":"pip install dbt-core dbt-vertica","lang":"bash","label":"Recommended Installation (dbt Core >= 1.8)"},{"cmd":"pip install dbt-vertica","lang":"bash","label":"Legacy Installation (dbt Core < 1.8)"}],"dependencies":[{"reason":"Required for dbt CLI functionality; must be explicitly installed since dbt Core v1.8.","package":"dbt-core","optional":false},{"reason":"The underlying Python driver used to connect to Vertica.","package":"vertica-python","optional":false}],"imports":[{"note":"dbt adapters extend dbt Core's capabilities, rather than providing Python classes for direct import by end-users.","symbol":"dbt-vertica","correct":"dbt-vertica is a dbt adapter and is not typically imported directly into user Python code. Its functionality is exposed via dbt CLI commands and YAML configurations (e.g., profiles.yml, dbt_project.yml)."}],"quickstart":{"code":"# 1. Install dbt-vertica and dbt-core (recommended for dbt Core >= 1.8)\npip install dbt-core dbt-vertica\n\n# 2. Initialize a new dbt project\ndbt init my_vertica_project\ncd my_vertica_project\n\n# 3. Configure your profiles.yml (usually located at ~/.dbt/profiles.yml)\n#    Ensure you replace placeholders or set environment variables.\n#    Example profiles.yml entry (use your actual values or env vars):\n# my_vertica_profile:\n#   target: dev\n#   outputs:\n#     dev:\n#       type: vertica\n#       host: \"{{ env_var('DBT_VERTICA_HOST') }}\"\n#       port: \"{{ env_var('DBT_VERTICA_PORT', 5433) | as_number }}\"\n#       username: \"{{ env_var('DBT_VERTICA_USERNAME') }}\"\n#       password: \"{{ env_var('DBT_VERTICA_PASSWORD') }}\"\n#       database: \"{{ env_var('DBT_VERTICA_DATABASE') }}\"\n#       schema: \"{{ env_var('DBT_VERTICA_SCHEMA') }}\"\n\n# 4. Set environment variables (replace with your Vertica connection details)\nimport os\nos.environ['DBT_VERTICA_HOST'] = os.environ.get('DBT_VERTICA_HOST', 'your_vertica_host')\nos.environ['DBT_VERTICA_PORT'] = os.environ.get('DBT_VERTICA_PORT', '5433')\nos.environ['DBT_VERTICA_USERNAME'] = os.environ.get('DBT_VERTICA_USERNAME', 'your_username')\nos.environ['DBT_VERTICA_PASSWORD'] = os.environ.get('DBT_VERTICA_PASSWORD', 'your_password')\nos.environ['DBT_VERTICA_DATABASE'] = os.environ.get('DBT_VERTICA_DATABASE', 'your_database')\nos.environ['DBT_VERTICA_SCHEMA'] = os.environ.get('DBT_VERTICA_SCHEMA', 'your_schema')\n\n# 5. Test the connection\ndbt debug --target dev --profile my_vertica_project\n\n# 6. Create your first model (e.g., models/my_first_model.sql)\n# SELECT 1 as id, 'Hello dbt!' as message\n\n# 7. Run your dbt models\ndbt run --profile my_vertica_project\n","lang":"python","description":"To get started with dbt-vertica, first install the adapter and dbt-core. Then, initialize a dbt project, configure your Vertica connection details in `profiles.yml` (using environment variables for security is recommended), and finally, run `dbt debug` to verify connectivity. You can then create and run your dbt models."},"warnings":[{"fix":"Update your installation command to `pip install dbt-core dbt-vertica`.","message":"Beginning in dbt Core v1.8, adapter installations no longer automatically include `dbt-core`. Users must explicitly install `dbt-core` alongside `dbt-vertica` to ensure a working environment.","severity":"breaking","affected_versions":"dbt-vertica >= 1.8.x when used with dbt-core >= 1.8.x"},{"fix":"Update your incremental model configurations to use `unique_key` instead of `merge_columns` and ensure a unique key is provided.","message":"For incremental models using 'delete+insert' or 'merge' strategies, the `merge_columns` config parameter was refactored to `unique_key` and is now a required parameter. Existing models using `merge_columns` will cause errors.","severity":"breaking","affected_versions":"dbt-vertica versions supporting dbt-core 1.8+"},{"fix":"Configure your incremental models to use one of the supported `on_schema_change` values: `ignore`, `fail`, or `append_new_columns`.","message":"The `on_schema_change` parameter for incremental models in dbt-vertica does not support the `sync_all_columns` value. Only `ignore`, `fail`, and `append_new_columns` are currently supported.","severity":"gotcha","affected_versions":"All known dbt-vertica versions supporting `on_schema_change`"},{"fix":"Move any global config flags from `profiles.yml` to a `flags` dictionary in `dbt_project.yml`.","message":"In dbt Core v1.8, custom defaults for global config flags in `profiles.yml` have been deprecated. These flags should now be set in the `flags` dictionary within your `dbt_project.yml`.","severity":"deprecated","affected_versions":"dbt-core >= 1.8 (and thus dbt-vertica used with it)"}],"env_vars":null,"last_verified":"2026-04-14T00:00:00.000Z","next_check":"2026-07-13T00:00:00.000Z"}