Configuration¶
Droughty uses two configuration files:
profile.yaml — warehouse credentials, stored at
~/.droughty/profile.yamldroughty_project.yaml — project settings, stored at the root of your git repository
profile.yaml¶
The profile file contains your warehouse credentials and connection details. It lives in the .droughty directory in your home folder:
~/.droughty/profile.yaml
You can have multiple named profiles in one file. The profile used for a given project is selected via the profile key in droughty_project.yaml.
BigQuery Profile¶
Minimal example (using ADC or browser OAuth — no key file needed):
my_profile:
warehouse_name: big_query
project_name: my-gcp-project
schema_name: analytics
test_schemas:
- my_staging_schema
- my_integration_schema
- my_analytics_schema
dbml_schemas:
- my_staging_schema
- my_integration_schema
- my_analytics_schema
Full example with all options:
my_profile:
warehouse_name: big_query
project_name: my-gcp-project # GCP project ID
schema_name: analytics # Primary analytics dataset
key_file: /path/to/key.json # Service account key (optional if using OAuth/ADC)
openai_secret: sk-... # OpenAI API key — required for `droughty docs` and `droughty qa`
langsmith_secret: ls-... # LangSmith API key — optional, enables QA tracing
langsmith_project: my-project # LangSmith project name — optional
test_schemas: # Schemas scanned by `droughty dbt`
- my_staging_schema
- my_integration_schema
- my_analytics_schema
dbml_schemas: # Schemas scanned by `droughty dbml`
- my_staging_schema
- my_integration_schema
- my_analytics_schema
Snowflake Profile¶
my_profile:
warehouse_name: snowflake
account: myaccount.us-east-1 # Snowflake account identifier (include region)
user: myuser
password: mypassword
warehouse: compute_wh # Snowflake virtual warehouse name
database: my_database
schema: analytics
role: my_role # Role with INFORMATION_SCHEMA SELECT access
test_schemas:
- staging
- integration
- analytics
dbml_schemas:
- staging
- integration
- analytics
Note
The profile name key (e.g. my_profile) must exactly match the profile: value in your droughty_project.yaml.
droughty_project.yaml¶
The project file controls output paths, filenames, and optional features. Place it at the root of your git repository (or specify a custom location with --project-dir).
Minimal example¶
profile: my_profile
lookml_path: lookml/
dbt_path: models/
dbml_path: db_docs/
cube_path: schema/
Full reference¶
profile: my_profile # Must match a key in ~/.droughty/profile.yaml
# --- LookML output ---
lookml_path: lookml/ # Directory for LookML output files
lookml_base_filename: base # Filename for base views file
lookml_explore_filename: explores # Filename for explores file
lookml_measures_filename: measures # Filename for measures file
lookml_base_path: views/ # Sub-path within lookml_path for views
# --- dbt output ---
dbt_path: models/ # Directory for dbt schema.yml output
dbt_tests_filename: schema # Filename for schema tests file
# --- DBML output ---
dbml_path: db_docs/ # Directory for DBML output files
dbml_filenames: # One output file per entry
- analytics_layer
# --- Cube output ---
cube_path: schema/ # Directory for Cube schema output
cube_base_filename: base # Filename for base cubes file
cube_integration_filename: integrations # Filename for integration file
cube_measures_filename: measures # Filename for measures file
# --- Staging output (GCP only) ---
stage_path: models/staging/ # Directory for staging model output
# --- Documentation output ---
field_description_path: warehouse_docs
field_description_file_name: field_descriptions.md
openai_field_descriptions_path: warehouse_docs
openai_field_descriptions_filename: openai_field_descriptions
# --- Explores (optional) ---
# Enables dimensional inference for LookML/Cube explore generation.
# parent_table is joined to dimensions and facts.
explores:
parent_table:
- my_fact_table
dimensions:
- my_dim_table
facts:
- my_fact_table
# --- LookML Period-over-Period parameters (optional) ---
# Adds PoP dashboard parameters to specified views.
lookml_pop:
views:
orders_view:
- orders_daily_fact
# --- dbt test overrides (optional) ---
# Replace the auto-generated tests for specific columns.
test_overwrite:
models:
my_table:
my_pk_field:
- not_null
- unique
# --- dbt test ignore (optional) ---
# Skip all test generation for these tables entirely.
test_ignore:
models:
- raw_events_table
- temp_staging_table
# --- Entity resolution (optional) ---
# Used by `droughty resolve` for entity deduplication.
entity_resolution:
read_schema: resolution_schema
write_schema: resolution_schema
read_table_names:
customer:
- customer_col1
- customer_col2
write_column_names:
- merge_key
write_table_name:
- resolved_customer
Configuration Key Reference¶
profile.yaml keys¶
Key |
Required |
Description |
|---|---|---|
|
Yes |
|
|
BigQuery only |
GCP project ID |
|
BigQuery only |
Primary analytics dataset name |
|
No |
Path to BigQuery service account JSON key |
|
Snowflake only |
Snowflake account identifier (include region suffix) |
|
Snowflake only |
Snowflake username |
|
Snowflake only |
Snowflake password |
|
Snowflake only |
Snowflake virtual warehouse name |
|
Snowflake only |
Snowflake database name |
|
Snowflake only |
Snowflake schema name |
|
Snowflake only |
Snowflake role with INFORMATION_SCHEMA access |
|
Yes |
List of schemas scanned by |
|
Yes |
List of schemas scanned by |
|
For docs/qa |
OpenAI API key (required for |
|
No |
LangSmith API key for QA tracing |
|
No |
LangSmith project name for QA tracing |
droughty_project.yaml keys¶
Key |
Required |
Description |
|---|---|---|
|
Yes |
Name of the profile in |
|
No |
Output directory for LookML files (default: |
|
No |
Base views filename (default: |
|
No |
Explores filename (default: |
|
No |
Measures filename (default: |
|
No |
Sub-path for views within |
|
No |
Output directory for dbt schema (default: |
|
No |
dbt schema filename (default: |
|
No |
Output directory for DBML files (default: |
|
No |
List of DBML output filenames |
|
No |
Output directory for Cube files (default: |
|
No |
Base cubes filename |
|
No |
Integrations filename |
|
No |
Measures filename |
|
No |
Output directory for staging models (default: |
|
No |
Output directory for AI descriptions |
|
No |
Output filename for AI descriptions |
|
No |
Dimensional inference config for LookML/Cube explores |
|
No |
Period-over-Period parameter config for Looker |
|
No |
Per-column test overrides for |
|
No |
Tables to skip entirely in |
|
No |
Entity deduplication config for |