Exactly One Not Null Check#
Check: exactly-one-not-null-check
Purpose: Checks whether exactly one of the specified columns is non-null in each row. A row fails the check if none or more than one of the columns are populated. This is useful for enforcing mutual exclusivity — for example, when exactly one of email, phone, or user_id must be present.
Python Configuration#
from sparkdq.checks import ExactlyOneNotNullCheckConfig
from sparkdq.core import Severity
ExactlyOneNotNullCheckConfig(
    check_id="must_provide_exactly_one_id",
    columns=["email", "phone", "user_id"],
    severity=Severity.CRITICAL
)
Declarative Configuration#
- check: exactly-one-not-null-check
  check-id: must_provide_exactly_one_id
  columns:
    - email
    - phone
    - user_id
  severity: critical
Typical Use Cases#
- ✅ Enforce mutual exclusivity across optional identifiers (e.g. email or phone or user_id). 
- ✅ Prevent ambiguous data entries where multiple conflicting fields are filled. 
- ✅ Detect rows missing essential identification if all relevant fields are null. 
