Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
How do I pass field names containing dashes in dbt source yml file?
Working with dbt version 2
I'm trying to set up source checks but I'm running into an issue where the column names I'm setting tests for have dashes (e.g. my_table.some-field-with-dash
). I currently get e.g. the following error when running dbt test: "Database Error in test testname: column "some" does not exist in my_table".
Unfortunately I can't change the source column names. Is there a way I can enter the field names into the source yml file so it gets passed through correctly? I've tried single and double quotes around the column name, and adding the following quoting configuration:
quoting:
database: true
schema: true
identifier: true
Database is redshift but I don't think this is db specific.
1 answer
There may be a better way to handle this but this eventually worked for me. It's necessary to add quote: true
below each field name with a dash. E.g.:
tables:
- name: my_table
columns:
- name: some-field-with-dash
quote: true
I found this answer in the dbt docs here: quote property However, if there is any kind of way to set this universally for safety, I'd love to get a different answer.
0 comment threads