MetricSign
EN|NLRequest Access
Medium severityconfiguration

Power BI Refresh Error:
SourceFreshnessError

What does this error mean?

The dbt source freshness check failed because the SQL query used to retrieve the latest record timestamp for a source table raised a database error. This is distinct from a freshness warn or error threshold breach — the query itself could not execute.

Common causes

  • 1The loaded_at_field column specified in the YAML source definition does not exist in the source table
  • 2The source table has been dropped or renamed and the freshness check query returns a relation-not-found error
  • 3The dbt runner does not have SELECT permission on the source table
  • 4The filter expression in the freshness check references columns that are not available in the warehouse
  • 5The source table is in a different database or schema than the profile target, and the fully qualified name is incorrect

How to fix it

  1. 1Verify the loaded_at_field column exists in the source table: SELECT <loaded_at_field> FROM <source_table> LIMIT 1.
  2. 2Update the source YAML if the source table was renamed: sources.yml > tables > name.
  3. 3Grant SELECT on the source table to the dbt runner role.
  4. 4Check the schema and database configuration in sources.yml matches the actual location of the source table.
  5. 5Run dbt source freshness --select source:<source_name> to test the freshness check in isolation.

Frequently asked questions

What is the difference between a freshness error threshold breach and a SourceFreshnessError?

A threshold breach (warn or error) means the query ran successfully but the data is older than the configured threshold. A SourceFreshnessError means the query itself failed to execute — typically a schema or permission problem.

Can I run source freshness checks without a loaded_at_field?

Not directly. dbt requires a timestamp column to calculate freshness. If no timestamp column exists, consider using a custom freshness query in the source definition with the loaded_at_field pointing to a surrogate timestamp.

Other configuration errors