GX, Soda or dbt Tests?

Choosing Between GX Core, Soda Core and dbt Tests

All three found real problems in the same lakehouse, from different angles:

The three data-quality tools as run on BookNest's lakehouse
Aspect GX Core 1.23.2 Soda Core 4.25.0 2,433 dbt 37,942 tests (dbt-core 1.12)
License Apache-2.0 (Fivetran 16,237 steward) Elastic License 2.0 (v3: Apache-2.0) Apache-2.0
Checks written in Python classes or JSON YAML contract YAML plus SQL
Where checks run pandas 16,086 , Spark 129 or SQL engines SQL in the data source SQL in the warehouse
Python 3.14 No (below 3.14 only) 3.12 official, 3.13+ unofficial Yes
Best at Rich profiling, HTML Data Docs Contracts at ingestion, any table Tests next to the model code
Commercial layer GX Cloud (now FICO's) Soda Cloud (anomalies, alerts) dbt Labs' hosted platform

For BookNest: dbt tests on everything dbt builds, since they live beside the SQL; a Soda contract on each table arriving from outside (Kafka 129 landings, raw files) where no model exists yet; and GX where checks must run in Python on DataFrames, inside a Spark job before it commits. Two tools on one table only double the alerts.