All three found real problems in the same lakehouse, from different angles:
| 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.