The problem I’m having
adapter.get_relation cannot retrieve the relation for a table that exists in the BigQuery database.
The context of why I’m trying to do this
I’m following the dbt official course(1:00 - 3:00). The only difference is that my database is BigQuery, whereas the course uses Snowflake.
My code:
{% set old_relation = adapter.get_relation(
database = target.database,
schema = "dbt_xliu",
identifier = "customer_orders"
) -%}
The error is:
Compilation Error in model test (models/test.sql)
Macro get_filtered_columns_in_relation expected a Relation but received the value: None
> in macro _is_relation (macros/jinja_helpers/_is_relation.sql)
> called by macro default__get_filtered_columns_in_relation (macros/sql/get_filtered_columns_in_relation.sql)
> called by macro get_filtered_columns_in_relation (macros/sql/get_filtered_columns_in_relation.sql)
> called by macro compare_relations (macros/compare_relations.sql)
> called by model test (models/test.sql)
What I’ve already tried
All names are correct because the following code works:
{% set database = target.database %}
{% set schema = 'dbt_xliu' %}
{% set identifier = 'customer_orders' %}
SELECT *
FROM `{{ database }}.{{ schema }}.{{ identifier }}`
I also tried using {% if execute %}:
{% if execute %}
{% set old_relation = adapter.get_relation(
database = database_name,
schema = schema_name,
identifier = table_name
) %}
{% else %}
{% set old_relation = [] %}
{% endif %}
but it does not work, because relation is till none and BigQuery compiles the code as “from ()”
I’m sure there is a BigQuery compiling problem here, but I can’t identify what it is.
Any suggestions would be greatly appreciated!