fix(recency): handle empty tables returning NULL#1065
Merged
b-per merged 1 commit intodbt-labs:mainfrom Jan 9, 2026
Merged
Conversation
When a table is empty, MAX(field) returns NULL. The comparison NULL < threshold evaluates to NULL (not TRUE), causing the WHERE clause to filter out the row and incorrectly pass the test. This fix adds 'OR most_recent IS NULL' to properly fail the test when a table has no data within the recency window, including when the table is completely empty.
b-per
approved these changes
Jan 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
When a table is completely empty, the
recencytest incorrectly passes instead of failing.Root Cause
When a table has no data,
MAX(field)returnsNULL. The current WHERE clause:With
most_recent = NULL, the comparisonNULL < thresholdevaluates toNULL(notTRUE), so the WHERE clause filters out the row and returns zero rows — causing the test to pass.Reproduction
dbt test— the test passes even though there's no recent dataSolution
Add
OR most_recent IS NULLto the WHERE clause:This ensures the test fails when:
most_recent < threshold)most_recent IS NULL)Testing
Verified locally with an empty Snowflake table that was previously passing the recency test incorrectly.