This page compares tools. For the delivery-by-delivery procedure, see how to check vendor files. For TestGen setup, see the TestGen files walkthrough.
The usual buyer here is a small team checking vendor files before the warehouse load. The file lands, a loader accepts it, and the problem shows up in a report a week later.
What DuckDB gives you natively
DuckDB has no data quality tests. Its SUMMARIZE command returns min, max, approximate distinct count, average, standard deviation, quartiles, count, and null percentage per column (checked October 2026). That’s a good first look. It keeps no history, runs no tests, and alerts nobody.
Tools worth considering
Vendor claims are from each vendor’s own docs and pricing pages, checked October 21, 2026.
| Tool | Profiling | Generated data tests | Observability monitors | Data quality dashboards | Reads files where they sit | Open source | Price basis |
|---|---|---|---|---|---|---|---|
| DataOps TestGen | 55 column characteristics | Yes, 34 test types | Freshness, volume, schema | Scorecards | Local path, S3, Azure Blob | Apache 2.0 | Free for one connection; Enterprise per user and connection |
| GX Core | Yes | No, you write each Expectation | Rules you write | No | Local, S3, Azure Blob, GCS, through pandas or Spark | Apache 2.0 | Free |
| Soda Core | In Soda Cloud | No, you write contracts | Checks you write | In Soda Cloud | A .duckdb or Parquet file | Elastic License 2.0 | Free, Team $750 a month, Enterprise custom |
| Pandera | Schema inference for pandas | Inferred schema for pandas | No | No | No, validates a DataFrame you load | MIT | Free |
| dbt with dbt-duckdb | No | No, four built-in generic tests you attach | Source freshness | No | Yes, sources point at files, including S3 | Apache 2.0 | Free |
The GX Core profiling and generated-test entries come from DataKitchen’s GX OSS comparison, reviewed June 11, 2026.
Who should pick what
Pick Pandera or GX Core if your files already pass through Python and you want checks in code review. Pandera is the lightest for a pandas or Polars pipeline. Pick dbt-duckdb if you transform the files in dbt anyway. Pick Soda if you want contracts in YAML and a hosted UI, and you accept a source-available license. If partners send Excel, CsvPath Framework lists Excel validation; TestGen needs a CSV first.
Pick TestGen if nobody has time to write the checks. It profiles the file, flags PII and hygiene issues, generates the tests, and keeps history across deliveries, so a renamed column shows up in the next profile. Failed tests are the evidence for your data contract conversation with the vendor. DataKitchen’s NYC taxi run loaded one 48 MB Parquet file into Postgres before TestGen saw a row. TestGen 5.134.0 removed that step.
The trade-off: file runs use TestGen’s own memory and disk, one run at a time by default. Size the machine to your largest file.
The core profiling, testing, and monitoring engine is free and open source. Enterprise adds team access, security, Commercial Pharma tests, source-data controls for AI, and support. Open source covers one user, one connection, one project, and unlimited tables. Enterprise is $100 per user per month plus $100 per database connection per month. For the database list, see which databases TestGen supports.
Documentation: Connect your Data, Access Requirements, Manage Table Groups, Size TestGen for DuckDB and File Data Sources