Search code examples
testingdbt

How to test a relationship in seeds with a source() in dbt


There is any way to test a seed with a relatioship coming from a external source?

I'm trying to test the seeds before creating them, to do this I'm creating in this moment a relationship test but with an external source.

I would like to do something like this in the seeds/schema.yml:

version: 2

seeds:
  - name: products_market
    description: ""
    columns:
      - name: id_source
        description: "ID source"
      - name: id_target
        description: "id target"
        tests:
          - relationship:
              to: source('dt', 'products')
              field: id_product

In this case the field id_target would be checked if exists the field id_product from dt.products

But I get the error

 'test_relationship' is undefined. This can happen when calling a macro that does not exist. Check for typos and/or install package dependencies with "dbt deps".

The sources.yml

version: 2

sources:
  - name: dt 
    tables:
      - name: products
        description: General Products

I saw this info but not sure if I'm doing it well or maybe there is another way to do this https://docs.getdbt.com/reference/seed-properties https://docs.getdbt.com/reference/resource-properties/tests

Thanks in advance


Solution

  • I was missing an 's' in the test relationships statement in the schema.yml. Anyway it doesn't look i'm doing it properly, it says there is no test or do nothing when I do dbt seed... or dbt build

    version: 2
    
    seeds:
      - name: products_market
        description: ""
        columns:
          - name: id_source
            description: "ID source"
          - name: id_target
            description: "id target"
            tests:
              - relationship**s**:
                  to: source('dt', 'products')
                  field: id_product