Run dbt test on a single model.yml related to the table alias with different schema

Hello !
I’ve got 2 tables : my_table_1 and my_table_2 created from a model my_table with a dynamic alias where the alias is set up through the dag. The differences with the two of them are the alias of course but also a column name.
In other words, the my_table_1 schema has the common columns whereas the my_table_2 schema has a column country populated along with the common columns shared with my_table_1.
Creating the tables with the different schema is straight forward but I’m stuck with the my_table.yml and its schema for the testing.
What I’m trying to achieve is to run the my_table.yml using dbt test that would read the my_table_1 schema without the column country but would do it with the my_table_2 schema with the column country
I tried to add a if-statement in the yml file but it doesn’t seem to work (see below).

Do you have any idea how I can achieve that please ?

my_table.yml 

models:
    - marts:
      name: my_table      
      columns:
{% if alias == "my_table_2" %}
       - name: country
         tests:
           - not_null:
               config:
                 severity: error
{% endif %}
        - name: id
          tests:
           - not_null:
               config:
                 severity: error
        - name: name
          tests:
           - not_null:
               config:
                 severity: error
my_table.yml 

models:
    - marts:
      name: my_table
      tests:
        - dbt_utils.expression_is_true:
            expression: "{% if config.get('alias') == 'my_table_2' %} COUNTRY IS NOT NULL {% else %} TRUE {% endif %}"

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.