Can't I also just specify a SQL schema in my DWH which would handle a lot of the validation (e.g. unique, not null, ...)? If the data loaded doesn't comply with the schema then don't load it.
That would handle some aspects indeed. Contracts and checks allow for more flexibility in terms of check types, thresholding, and support for allowing more people outside the producer team to contribute checks.
pip install soda-core-contracts
ModuleNotFoundError: No module named 'soda.contracts.data_contract_translator'
Can't I also just specify a SQL schema in my DWH which would handle a lot of the validation (e.g. unique, not null, ...)? If the data loaded doesn't comply with the schema then don't load it.
That would handle some aspects indeed. Contracts and checks allow for more flexibility in terms of check types, thresholding, and support for allowing more people outside the producer team to contribute checks.