Rule types and failed rows validations
Data Quality Studio provides rule types to validate data quality in Snowflake, Databricks, and BigQuery. Each rule type targets specific data quality dimensions and generates a SQL query that provides failed rows when violations occur.
How failed rows validation works
When a data quality rule fails, Atlan automatically generates SQL queries that help you identify and inspect the problematic rows in your source system.
Query behavior:
- Filters rows that violate the rule condition
- Available for rules with per-row conditions (including Min/Max). Not available for aggregate-only metrics (Average, Standard Deviation, Row Count, Freshness, and all Reconciliation rules). For Custom SQL, failed rows are available only when your SQL returns invalid rows.
Engine support:
- All rule types work with Snowflake, Databricks and BigQuery
- Column type restrictions vary by engine (see individual rule details below)
Accessing failed rows
Failed rows SQL queries can be accessed from the Data quality tab in Atlan. Select any failed rule execution to view the generated SQL query to investigate the specific rows that violate the rule.

Available rule types
Rule types are organized by data quality dimension. Each rule type includes supported column types for Snowflake, Databricks and BigQuery, along with details about the failed rows SQL it generates.
- Completeness: Blank Count, Blank Percentage, Null Count, Null Percentage
- Statistical: Max Value, Min Value, Average, Standard Deviation
- Uniqueness: Unique Count, Duplicate Count
- Validity: Regex, String Length, Valid Values, Reference
- Timeliness: Freshness
- Volume: Row Count
- Consistency: Row Count Reconciliation, Average Reconciliation, Sum Reconciliation, Duplicate Count Reconciliation, Unique Count Reconciliation
- Custom: Custom SQL
Completeness checks
Completeness rules identify missing or empty data in your columns.
- Snowflake
- Databricks
- BigQuery
Blank CountCompletenessOptional
Blank CountCompletenessCounts blank values in a column.
VARCHARSTRINGTEXTSELECT * FROM table WHERE column = ''Blank PercentageCompletenessOptional
Blank PercentageCompletenessCalculates the percentage of blank values in a column.
VARCHARSTRINGTEXTSELECT * FROM table WHERE column = ''Null CountCompletenessOptional
Null CountCompletenessCounts NULL values in a column.
DATEFLOATNUMBERDECIMALDECNUMERICINTINTEGERBIGINTSMALLINTFLOAT4FLOAT8DOUBLEDOUBLE PRECISIONREALTIMESTAMP_LTZTIMESTAMP_NTZDATETIMETIMESTAMPLTZTIMESTAMPNTZTIMESTAMP_TZVARCHARSTRINGTEXTSELECT * FROM table WHERE column IS NULLNull PercentageCompletenessOptional
Null PercentageCompletenessCalculates the percentage of NULL values in a column.
DATEFLOATNUMBERDECIMALDECNUMERICINTINTEGERBIGINTSMALLINTFLOAT4FLOAT8DOUBLEDOUBLE PRECISIONREALTIMESTAMP_LTZTIMESTAMP_NTZDATETIMETIMESTAMPLTZTIMESTAMPNTZTIMESTAMP_TZVARCHARSTRINGTEXTSELECT * FROM table WHERE column IS NULLBlank CountCompletenessOptional
Blank CountCompletenessCounts blank values in a column.
STRINGSELECT * FROM table WHERE column = ''Blank PercentageCompletenessOptional
Blank PercentageCompletenessCalculates the percentage of blank values in a column.
STRINGSELECT * FROM table WHERE column = ''Null CountCompletenessOptional
Null CountCompletenessCounts NULL values in a column.
DATETIMESTAMPTIMESTAMP_NTZFLOATDOUBLEDECIMALBYTESHORTLONGBIGINTINTEGERINTSMALLINTTINYINTSTRINGBOOLEANBINARYVARIANTOBJECTSELECT * FROM table WHERE column IS NULLNull PercentageCompletenessOptional
Null PercentageCompletenessCalculates the percentage of NULL values in a column.
DATETIMESTAMPTIMESTAMP_NTZFLOATDOUBLEDECIMALBYTESHORTLONGBIGINTINTEGERINTSMALLINTTINYINTSTRINGBOOLEANBINARYVARIANTOBJECTSELECT * FROM table WHERE column IS NULLBlank CountCompletenessOptional
Blank CountCompletenessCounts blank values in a column.
STRINGSELECT * FROM table WHERE column = ''Blank PercentageCompletenessOptional
Blank PercentageCompletenessCalculates the percentage of blank values in a column.
STRINGSELECT * FROM table WHERE column = ''Null CountCompletenessOptional
Null CountCompletenessCounts NULL values in a column.
STRINGINT64FLOAT64NUMERICBIGNUMERICBOOLBYTESDATEDATETIMETIMETIMESTAMPSELECT * FROM table WHERE column IS NULLNull PercentageCompletenessOptional
Null PercentageCompletenessCalculates the percentage of NULL values in a column.
STRINGINT64FLOAT64NUMERICBIGNUMERICBOOLBYTESDATEDATETIMETIMETIMESTAMPSELECT * FROM table WHERE column IS NULLStatistical checks
Statistical rules validate numeric values by comparing them to minimum, maximum, average, and standard deviation thresholds.
- Snowflake
- Databricks
- BigQuery
Max ValueStatisticalOptional
Max ValueStatisticalComputes the maximum value and validates it against a threshold. Provides failed rows that violate the threshold (for example, when using ≥ X, returns rows less than X).
FLOATNUMBERDECIMALDECNUMERICINTINTEGERBIGINTSMALLINTFLOAT4FLOAT8DOUBLEDOUBLE PRECISIONREALSELECT * FROM table WHERE column > XSELECT * FROM table WHERE column <= X
Min ValueStatisticalOptional
Min ValueStatisticalComputes the minimum value and validates it against a threshold. Provides failed rows that violate the threshold (for example, when using ≥ X, returns rows less than X).
FLOATNUMBERDECIMALDECNUMERICINTINTEGERBIGINTSMALLINTFLOAT4FLOAT8DOUBLEDOUBLE PRECISIONREALSELECT * FROM table WHERE column < XSELECT * FROM table WHERE column >= X
AverageStatisticalMetric-only
AverageStatisticalCalculates the average value of numeric columns. Failed rows SQL query is not available.
FLOATNUMBERDECIMALDECNUMERICINTINTEGERBIGINTSMALLINTFLOAT4FLOAT8DOUBLEDOUBLE PRECISIONREALStandard DeviationStatisticalMetric-only
Standard DeviationStatisticalCalculates standard deviation for numeric columns. Failed rows SQL query is not available.
FLOATNUMBERDECIMALDECNUMERICINTINTEGERBIGINTSMALLINTFLOAT4FLOAT8DOUBLEDOUBLE PRECISIONREALMax ValueStatisticalOptional
Max ValueStatisticalComputes the maximum value and validates it against a threshold. Provides failed rows that violate the threshold (for example, when using ≥ X, returns rows less than X).
BYTEINTEGERSHORTLONGBIGINTINTSMALLINTTINYINTFLOATDOUBLEDECIMALSELECT * FROM table WHERE column > XSELECT * FROM table WHERE column <= X
Min ValueStatisticalOptional
Min ValueStatisticalComputes the minimum value and validates it against a threshold. Provides failed rows that violate the threshold (for example, when using ≥ X, returns rows less than X).
BYTEINTEGERSHORTLONGBIGINTINTSMALLINTTINYINTFLOATDOUBLEDECIMALSELECT * FROM table WHERE column < XSELECT * FROM table WHERE column >= X
AverageStatisticalMetric-only
AverageStatisticalCalculates the average value of numeric columns. Failed rows SQL query is not available.
INTEGERBYTESHORTLONGBIGINTINTSMALLINTTINYINTFLOATDOUBLEDECIMALStandard DeviationStatisticalMetric-only
Standard DeviationStatisticalCalculates standard deviation for numeric columns. Failed rows SQL query is not available.
INTEGERBYTESHORTLONGBIGINTINTSMALLINTTINYINTFLOATDOUBLEDECIMALMax ValueStatisticalOptional
Max ValueStatisticalComputes the maximum value and validates it against a threshold. Provides failed rows that violate the threshold (for example, when using ≥ X, returns rows less than X).
INT64FLOAT64NUMERICBIGNUMERICSELECT * FROM table WHERE column > XSELECT * FROM table WHERE column <= X
Min ValueStatisticalOptional
Min ValueStatisticalComputes the minimum value and validates it against a threshold. Provides failed rows that violate the threshold (for example, when using ≥ X, returns rows less than X).
INT64FLOAT64NUMERICBIGNUMERICSELECT * FROM table WHERE column < XSELECT * FROM table WHERE column >= X
AverageStatisticalMetric-only
AverageStatisticalCalculates the average value of numeric columns. Failed rows SQL query is not available.
INT64FLOAT64NUMERICBIGNUMERICStandard DeviationStatisticalMetric-only
Standard DeviationStatisticalCalculates standard deviation for numeric columns. Failed rows SQL query is not available.
INT64FLOAT64NUMERICBIGNUMERICUniqueness checks
Uniqueness rules identify duplicate values and measure distinct value counts in columns.
- Snowflake
- Databricks
- BigQuery
Unique CountUniquenessOptional
Unique CountUniquenessCounts the number of unique non-NULL values in the selected column.
DATEFLOATNUMBERDECIMALDECNUMERICINTINTEGERBIGINTSMALLINTFLOAT4FLOAT8DOUBLEDOUBLE PRECISIONREALTIMESTAMP_LTZTIMESTAMP_NTZDATETIMETIMESTAMPLTZTIMESTAMPNTZTIMESTAMP_TZVARCHARSTRINGTEXTSELECT DISTINCT column FROM tableDuplicate CountUniquenessOptional
Duplicate CountUniquenessCounts distinct values that appear more than once.
DATEFLOATNUMBERDECIMALDECNUMERICINTINTEGERBIGINTSMALLINTFLOAT4FLOAT8DOUBLEDOUBLE PRECISIONREALTIMESTAMP_LTZTIMESTAMP_NTZDATETIMETIMESTAMPLTZTIMESTAMPNTZTIMESTAMP_TZVARCHARSTRINGTEXTSELECT column, COUNT(*) FROM table GROUP BY column HAVING COUNT(*) > 1Unique CountUniquenessOptional
Unique CountUniquenessCounts the number of unique non-NULL values in the selected column.
DATETIMESTAMPTIMESTAMP_NTZFLOATDOUBLEDECIMALBYTESHORTLONGBIGINTINTINTEGERSMALLINTTINYINTSTRINGSELECT DISTINCT column FROM tableDuplicate CountUniquenessOptional
Duplicate CountUniquenessCounts distinct values that appear more than once.
DATETIMESTAMPTIMESTAMP_NTZFLOATDOUBLEDECIMALINTEGERBYTESHORTLONGBIGINTINTSMALLINTTINYINTSTRINGSELECT column, COUNT(*) FROM table GROUP BY column HAVING COUNT(*) > 1Unique CountUniquenessOptional
Unique CountUniquenessCounts the number of unique non-NULL values in the selected column.
STRINGINT64FLOAT64NUMERICBIGNUMERICBOOLDATEDATETIMETIMETIMESTAMPSELECT DISTINCT column FROM tableDuplicate CountUniquenessOptional
Duplicate CountUniquenessCounts distinct values that appear more than once.
STRINGINT64FLOAT64NUMERICBIGNUMERICBOOLDATEDATETIMETIMETIMESTAMPSELECT column, COUNT(*) FROM table GROUP BY column HAVING COUNT(*) > 1Validity checks
Validity rules verify that data values conform to expected formats, patterns, and constraints.
- Snowflake
- Databricks
- BigQuery
RegexValidityOptional
RegexValidityValidates column values using REGEXP function. Returns rows that don't satisfy the regex condition.
VARCHARSTRINGTEXTSELECT * FROM table WHERE NOT REGEXP(column, 'pattern')String LengthValidityOptional
String LengthValidityValidates string length using comparison operators. Returns rows where string length violates the threshold. Supported operators: between, =, >, ≥, <, ≤.
VARCHARSTRINGTEXTSELECT * FROM table WHERE LENGTH(column) > XValid ValuesValidityOptional
Valid ValuesValidityValidates values using allowed or disallowed lists. Returns rows with values outside the allowed list or inside the disallowed list.
VARCHARSTRINGTEXTSELECT * FROM table WHERE column NOT IN ('value1', 'value2', 'value3')ReferenceValidityOptional
ReferenceValidityValidates column values against a reference table and column. Returns rows where values don't exist in the reference dataset. Useful for validating foreign key relationships or ensuring values match a master data list.
VARCHARSTRINGTEXTSELECT count(*) FROM table WHERE column NOT IN (SELECT DISTINCT ref_column FROM reference_table)RegexValidityOptional
RegexValidityValidates column values using RLIKE function. Returns rows that don't satisfy the regex condition.
STRINGSELECT * FROM table WHERE column RLIKE 'pattern'String LengthValidityOptional
String LengthValidityValidates string length using comparison operators. Returns rows where string length violates the threshold. Supported operators: between, =, >, ≥, <, ≤.
STRINGSELECT * FROM table WHERE LENGTH(column) > XValid ValuesValidityOptional
Valid ValuesValidityValidates values using allowed or disallowed lists. Returns rows with values outside the allowed list or inside the disallowed list.
STRINGSELECT * FROM table WHERE column NOT IN ('value1', 'value2', 'value3')ReferenceValidityOptional
ReferenceValidityValidates column values against a reference table and column. Returns rows where values don't exist in the reference dataset. Useful for validating foreign key relationships or ensuring values match a master data list.
STRINGSELECT count(*) FROM table WHERE column NOT IN (SELECT DISTINCT ref_column FROM reference_table)RegexValidityOptional
RegexValidityValidates column values using REGEXP_CONTAINS function. Returns rows that don't satisfy the regex condition.
STRINGSELECT * FROM table WHERE NOT REGEXP_CONTAINS(column, 'pattern')String LengthValidityOptional
String LengthValidityValidates string length using comparison operators. Returns rows where string length violates the threshold. Supported operators: between, =, >, ≥, <, ≤.
STRINGSELECT * FROM table WHERE LENGTH(column) > XValid ValuesValidityOptional
Valid ValuesValidityValidates values using allowed or disallowed lists. Returns rows with values outside the allowed list or inside the disallowed list.
STRINGSELECT * FROM table WHERE column NOT IN ('value1', 'value2', 'value3')ReferenceValidityOptional
ReferenceValidityValidates column values against a reference table and column. Returns rows where values don't exist in the reference dataset. Useful for validating foreign key relationships or ensuring values match a master data list.
STRINGSELECT count(*) FROM table WHERE column NOT IN (SELECT DISTINCT ref_column FROM reference_table)Timeliness checks
Timeliness rules verify data freshness by checking when data was last updated.
- Snowflake
- Databricks
- BigQuery
FreshnessTimelinessMetric-only
FreshnessTimelinessValidates data recency using date or timestamp columns. Failed rows SQL query is not available.
DATETIMESTAMP_LTZTIMESTAMP_TZTIMESTAMPLTZTIMESTAMPTZFreshnessTimelinessMetric-only
FreshnessTimelinessValidates data recency using timestamp columns. Failed rows SQL query is not available.
TIMESTAMPFreshnessTimelinessMetric-only
FreshnessTimelinessValidates data recency using timestamp or datetime columns. Failed rows SQL query is not available.
TIMESTAMPDATETIMEVolume checks
Volume rules measure the total number of rows in tables.
Row CountVolumeMetric-only
Row CountVolumeCounts total rows in a table. Operates at table level (no column selection required). Failed rows SQL query not available.
Consistency checks
Consistency rules validate that data matches between source and target tables by comparing aggregate metrics. These rules are useful for data reconciliation scenarios where you need to confirm that data pipelines maintain integrity.
- Snowflake
- Databricks
- BigQuery
Row Count ReconciliationConsistencyMetric-only
Row Count ReconciliationConsistencyCompares row counts between source and target tables. Returns the percentage or absolute difference. Failed rows SQL query is not available.
Average ReconciliationConsistencyMetric-only
Average ReconciliationConsistencyCompares average values between source and target columns. Returns the percentage or absolute difference. Failed rows SQL query is not available.
NUMBERINTEGERBIGINTDECIMALFLOATDOUBLESum ReconciliationConsistencyMetric-only
Sum ReconciliationConsistencyCompares sum values between source and target columns. Returns the percentage or absolute difference. Failed rows SQL query is not available.
NUMBERINTEGERBIGINTDECIMALFLOATDOUBLEDuplicate Count ReconciliationConsistencyMetric-only
Duplicate Count ReconciliationConsistencyCompares duplicate counts between source and target columns. Returns the percentage or absolute difference. Failed rows SQL query is not available.
NUMBERINTEGERBIGINTDECIMALFLOATDOUBLEUnique Count ReconciliationConsistencyMetric-only
Unique Count ReconciliationConsistencyCompares unique value counts between source and target columns. Returns the percentage or absolute difference. Failed rows SQL query is not available.
NUMBERINTEGERBIGINTDECIMALFLOATDOUBLERow Count ReconciliationConsistencyMetric-only
Row Count ReconciliationConsistencyCompares row counts between source and target tables. Returns the percentage or absolute difference. Failed rows SQL query is not available.
Average ReconciliationConsistencyMetric-only
Average ReconciliationConsistencyCompares average values between source and target columns. Returns the percentage or absolute difference. Failed rows SQL query is not available.
INTBIGINTDECIMALFLOATDOUBLESum ReconciliationConsistencyMetric-only
Sum ReconciliationConsistencyCompares sum values between source and target columns. Returns the percentage or absolute difference. Failed rows SQL query is not available.
INTBIGINTDECIMALFLOATDOUBLEDuplicate Count ReconciliationConsistencyMetric-only
Duplicate Count ReconciliationConsistencyCompares duplicate counts between source and target columns. Returns the percentage or absolute difference. Failed rows SQL query is not available.
INTBIGINTDECIMALFLOATDOUBLEUnique Count ReconciliationConsistencyMetric-only
Unique Count ReconciliationConsistencyCompares unique value counts between source and target columns. Returns the percentage or absolute difference. Failed rows SQL query is not available.
INTBIGINTDECIMALFLOATDOUBLEReconciliation rules for BigQuery Data Quality Studio are coming soon. Check back for updates on cross-table data validation capabilities.
Reconciliation rule configuration
Reconciliation rules require configuring both a source and target for comparison:
- Source table/column: The primary table or column you want to validate
- Target table/column: The reference table or column to compare against
- Allowed difference: The maximum acceptable difference, configured as either:
- Percentage of source: Difference as a percentage of the source value (e.g., 1% means the rule fails if the difference exceeds 1% of the source)
- Absolute value: Exact numeric difference allowed between source and target
Reconciliation rules support row scope filtering for incremental processing. When enabled, the filter applies to both source and target tables, allowing you to compare recent data loads without scanning entire tables.
Custom checks
Custom rules let you define your own SQL-based metrics tailored to specific validation requirements.
Custom SQLCustomConditional
Custom SQLCustomCustom SQL supports two modes: Invalid rows (default) — your SQL returns the violating rows; Atlan counts them and shows failed rows; and Numeric value — your SQL returns a single number; failed rows aren't available.
Custom SQL return types
The two return type modes determine how your SQL query results are processed and whether failed rows are available.
Invalid rowsCustomOptional
Invalid rowsCustomDefault mode. Write SQL that returns the invalid rows. Atlan wraps your SQL as `SELECT COUNT(*) FROM (<your-sql>) AS t` to evaluate thresholds and enables failed-rows SQL using your original query.
Numeric valueCustomMetric-only
Numeric valueCustomWrite SQL that returns a single numeric result (one row, one numeric column). Failed-rows SQL is not available in this mode.
See also
- Use AI-suggested rules: Let Atlan AI automatically suggest data quality rules based on your asset's metadata
- Data Quality Studio concepts
- Set up Snowflake
- Set up Databricks
- Set up BigQuery