All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
datacontract test against BigQuery no longer fails SQL quality checks with 'RowIterator' object has no attribute 'fetchone'datacontract test against Kafka no longer reports every field as null for plain (non-Confluent Schema Registry) Avro messages (#1344)pattern argument in invalidValues quality checks (#1346)datacontract test against Redshift no longer fails with relation "pg_catalog.pg_enum" does not exist. Redshift rides the Postgres ibis backend, whose schema introspection joins pg_catalog.pg_enum to detect enum columns — a relation Redshift does not expose. Introspection now omits that join (Redshift has no enum types).--system-truststore (env DATACONTRACT_SYSTEM_TRUSTSTORE) to verify TLS using the operating system’s certificate trust store, for use behind corporate proxies or with internal CAs.datacontract test against Redshift no longer fails with column "current_schema" does not exist. Redshift rides the Postgres ibis backend, whose introspection resolved the active schema with SELECT current_schema (no parentheses) — valid on PostgreSQL but rejected by Redshift, which only supports current_schema(). The configured server schema is now passed explicitly during introspection, skipping that query.datacontract test now only supports logicalTypes. Previously physicalType was preferrerd and used even if logicalType did not exist.datacontract test field type check now compares the full structured type tree for object and array logical types.map type is not supported until ODCS version v3.2.0 and is also ignored.datacontract --help no longer fails with ModuleNotFoundError: No module named 'ibis' when the optional ibis extra is not installed.datacontract test against Oracle now qualifies tables with the configured server schema (owner), fixing Could not read model '<table>': <table> when the login user differs from the table owner.datacontract test validates Azure Blob Storage / ADLS Gen2 file metadata against a data contract used as a storage policy (#1227)datacontract test against Trino now supports DATACONTRACT_TRINO_AUTHENTICATION=jwt with DATACONTRACT_TRINO_JWT_TOKEN, and DATACONTRACT_TRINO_AUTHENTICATION=oauth2 for the interactive browser flow.datacontract export sql --dialect clickhouse: export data contracts to ClickHouse SQL DDL. (#1293)examples/, used as the worked examples on the docs export and import pages.datacontract import unity now imports struct and array columns as structured ODCS types instead of only a flat type string: structs get nested properties, arrays get items (parsed recursively from Unity’s type_json, including descriptions on nested fields). Arrays also get the correct logicalType: array (previously object); this logical type fix applies to the sql and snowflake importers as well. Map columns and other unmappable SQL types now leave logicalType unset (instead of the invalid object) until ODCS v3.2 adds logicalType: map (RFC 0030). (#1280)datacontract export dcs no longer crashes on data contracts with a structured description or a standard server.datacontract test against Oracle releases before 23ai no longer fails every check with ORA-00923: FROM keyword not found where expected during schema introspection.datacontract test now recognizes Oracle VARCHAR2/NVARCHAR2 (with or without a length, e.g. VARCHAR2(4000)) as string types in the field type check.datacontract import powerbi imports a data contract from a Power BI semantic model (.pbit, .bim, or .json) (#1232,#1233 @dmaresma)datacontract edit shows the edited filename in the editor header, no longer offers New/Load Example/Open, and Cancel reverts to the file on diskdatacontract test no longer aborts remaining quality checks after a SQL quality check falls back to native execution on DuckDB-backed sources (#1302)DATACONTRACT_S3_SESSION_TOKEN to the connection again, fixing UnrecognizedClientException with temporary AWS credentials (#1309)datacontract edit now accepts a URL: it asks to download a local copy and opens that in the editor, using the configured API key (e.g., ENTROPY_DATA_API_KEY) to fetch the file.DATACONTRACT_BIGQUERY_BILLING_PROJECT environment variable. When set, query jobs are submitted to (and billed against) the billing project while data is read from the project specified in the server config. This enables cross-project and cross-organisation validation without requiring bigquery.jobUser on the data project.
datacontract test no longer fails on Spark/Databricks tables containing columns of types ibis cannot represent, such as VariantType (#1296)postgres and redshift extras now install psycopg[binary], whose wheels bundle the libpq client library. Previously, datacontract test against PostgreSQL/Redshift failed on machines without PostgreSQL client libraries installed (couldn't import psycopg: no pq wrapper available).datacontract test) are now also loaded from a .env file in the current working directory, walking up parent directories until one is found. Already-set environment variables take precedence over .env values, so exported variables and CI secrets keep working unchanged. (#1295)datacontract edit <file> opens a local data contract file in the Data Contract Editor (web UI). Starts a local web server (default port 4243, requires the api extra) that serves the editor, writes saves directly back to the file, and doubles as the editor’s test runner: “Run test” in the editor executes the data contract tests locally via the server’s own /test endpoint. The editor is bundled with the CLI and works offline; --editor-version loads a specific editor version from the CDN instead, --editor-assets-url a self-hosted build. If the file does not exist, the command offers to initialize a new data contract (same template as datacontract init). Saving gives feedback in the editor and on the console.datacontract test no longer fails with Compilation rule for RegexSearch operation is not defined when a contract uses logicalTypeOptions.pattern (or pattern) against SQL Server. SQL Server has no native regex operator, so the ibis mssql backend cannot compile re_search; pattern checks now fall back to a PATINDEX(...) > 0 LIKE match, restoring the behaviour of the former soda-core engine. Patterns that use real regex syntax (anchors, quantifiers, groups, .) cannot be expressed as a T-SQL LIKE pattern and now raise a clear error instead of failing cryptically. (#1284)datacontract test now compiles schema and quality checks into ibis expressions (dialect-correct SQL per backend via sqlglot, local/remote files via DuckDB) instead of generating SodaCL. Install extras now pull ibis-framework[<backend>] instead of soda-core-*. Check semantics and pass/fail results are preserved for the supported sources (postgres, redshift, mysql, snowflake, bigquery, databricks, sqlserver, oracle, trino, athena, impala, kafka/dataframe via the ibis Spark backend, and local/S3/GCS/Azure files).quality.type: custom with engine: soda) are no longer executed and now report a warning. Migrate them to quality.type: sql or a library metric (e.g. metric: rowCount).requires-python now allows 3.10–3.14). On 3.13/3.14 the Spark-backed extras resolve to PySpark 4.0 (Spark 3.5 has no 3.13+ build); the Kafka/Avro connector jars already adapt to the runtime Spark/Scala version. create_spark_session now pins PYSPARK_PYTHON/PYSPARK_DRIVER_PYTHON to the running interpreter so Spark’s Python workers match the driver.datacontract test against Databricks now supports more authentication methods beyond the personal access token (DATACONTRACT_DATABRICKS_TOKEN): an OAuth service principal for machine-to-machine auth (DATACONTRACT_DATABRICKS_CLIENT_ID + DATACONTRACT_DATABRICKS_CLIENT_SECRET), a local config profile via the Databricks SDK unified auth (DATACONTRACT_DATABRICKS_PROFILE, also covers Azure CLI/MSI), and an explicit connector auth type (DATACONTRACT_DATABRICKS_AUTH_TYPE, e.g. databricks-oauth for the interactive browser flow).datacontract test now records structured diagnostics on each check explaining why it passed or failed: the metric, measured value, threshold, and (for “bad row” metrics) the total row count and failed fraction. invalid_count checks also report the validity rule they enforced (e.g. {"max_length": 20}, {"pattern": "^.+@.+$"}). The diagnostics surface in the JSON output and the JUnit failure text. This replaces the Soda-specific diagnostics payload that the ibis migration had left unpopulated.datacontract test now honors ODCS quality.unit: percent on the count-of-bad-rows library metrics (nullValues, missingValues, invalidValues). The threshold is then compared against the failed fraction (0–100) of the model row count instead of an absolute count, so e.g. metric: nullValues, unit: percent, mustBeLessThan: 5 passes when fewer than 5% of rows are null. Percent on metrics where a row fraction has no meaning (rowCount, duplicateValues) logs a warning and falls back to the absolute count. The measured percent is added to the check diagnostics.datacontract test now honors ODCS quality.severity: a non-blocking severity (info, warning, low, minor, trivial) downgrades a failing quality check to a warning instead of a failed, so it no longer fails the run. Any other severity (or none) still fails. The severity is recorded in the check diagnostics.datacontract test --include-failed-samples collects a small sample of the rows that failed each missing/invalid/duplicate check (off by default). Each sample is restricted to the contract’s identifier columns (unique / primaryKey fields) plus the offending column; duplicate checks report the duplicated key values and their counts. Columns whose ODCS classification marks them sensitive (pii, personal, confidential, restricted, sensitive, secret) are omitted. Samples are capped at 5 rows per check and surface on Check.failed_samples in the JSON output and in the JUnit failure text. This is local-only and needs no Soda Cloud (soda-core itself collects failed-row samples only via Soda Cloud).mysql extension instead of ibis’s native MySQL backend, so the mysql extra stays pure-pip (no mysqlclient C build / system MySQL client libraries required).duckdb-extension-* wheels (httpfs/aws/azure) pinned in lockstep. The 1.5.x extension wheels publish arm64 Linux builds, so air-gapped installs on arm64 Linux are now supported (the previous platform skip markers were removed).kafka and databricks extras allow pyspark<5.0.import protobuf now uses the pure-Python proto-schema-parser instead of the protoc system binary. The protobuf extra no longer requires protoc (or the protobuf runtime), so .proto import works out of the box, including transitive imports across subdirectories.pip / uv installs at build time are routed through Socket Firewall Free, which blocks malicious dependencies. (#1275, #1277)SparkSession startup because the base image had no JVM. End users pulling datacontract/cli are unaffected by the build-side changes. (#1277)Secret Validation Failure) on DuckDB ≥1.5: explicit KEY_ID/SECRET now use the default config provider instead of CREDENTIAL_CHAIN.import csv no longer fails with a DuckDB binder error on DuckDB ≥1.5 (the uniqueness probe now uses count(DISTINCT ...) via SQL).soda-core runtime dependency and all soda-core-* install extras, plus the setuptools runtime shim they required. The sodacl export format (datacontract export sodacl) is unchanged and is now generated independently of any Soda runtime.details field on test-result checks (Run.checks[].details). It was a Soda-era placeholder that was never populated; the new structured diagnostics field replaces it. The JUnit failure text no longer prints a Details: line.authoritativeDefinitions[type=definition] on schema properties, filling fields the contract author left unset (#1261)
authoritativeDefinitions[type in {definition, semantics}] now rejects the contract on lint, test, ci, export, and changelog. (#1261)authoritativeDefinitions[type=semantics] (and the legacy type=semantic) the same way. A url: that points at the configured entropy-data host is fetched directly; a url: that’s an IRI (host doesn’t match) is routed through GET /api/semantics?iri=... on the configured host, which uses the API key’s organization to resolve. (#1262)--no-inline-references flag to skip the HTTP fetch (#1261)--json-schema points at a custom JSON Schema, the ODCS Pydantic step now accepts extra top-level fields the schema allows (#1266)test, lint, and ci now infer --output-format from the --output file extension when not given (.json → json, .xml → junit) (#1156 @dallylee)varchar(n) columns on Databricks with PySpark 4.0+, and for map and varchar types nested inside struct columns; affected columns emit a warning and skip the type check instead (#1219,#1245 @IchEssBlumen)WARNING/ERROR log messages are no longer hidden by default for import, export, changelog, catalog, dbt, and publish (#1264)datacontract test against S3, GCS, and Azure no longer fails with Failed to download extension in air-gapped containers. The required DuckDB extensions are now bundled via the s3/gcs/azure install extras (#1191 @ParenParikh)field_is_present check now correctly detects missing columns (#1065,#1163 @hieusats)import dbt --model <name>.vN now correctly imports the specified version of a versioned dbt model. Previously the filter compared the full name.vN string against node["name"] (which is always the bare base name), producing a silent empty contract (#1249 @willbowditch)datacontract test now logs the Data Contract CLI version and whether it ran as a local CLI or through the FastAPI server (including the request URL) as part of the test result logsphysicalName when set (falling back to name), matching the existing table-level resolution and the SQL/BigQuery exporters. Previously a property whose logical name differed from its physical column (e.g. name: brand with physicalName: BRAND) failed the presence and type checks even though the physical column existed (#1246)datacontract dbt sync command: generate dbt tests from an ODCS contract, then run dbt test for them, and optionally publish the results to Entropy Data (#1222, #1235)redshift server type for datacontract test (requires pip install datacontract-cli[redshift]). (#1236)decimal/numeric per dialect (Postgres → numeric, MySQL → decimal) so test’s column-type check matches information_schema (#1237)impala extra (pip install datacontract-cli[impala]) — pulls in soda-core-impala. Impala engine support landed in #965 but the install extra was never added; users had to install soda-core-impala manually. Also included in [all].dbt extra and the dbt-core dependency. import dbt now reads manifest.json directly with no third-party dependency, and works without installing any extra. Minimum supported manifest schema version is v9 (dbt 1.5+). Users who installed datacontract-cli[dbt] should switch to plain datacontract-cli.protobuf extra now requires the protoc compiler installed on the system. Replaces the bundled grpcio-tools (~50 MB of platform-specific protoc binaries) with the lighter protobuf runtime (>=3.20,<7.0). import protobuf raises a clear error with platform-specific install hints if protoc is not on PATH. Install with brew install protobuf (macOS), sudo apt install protobuf-compiler (Debian/Ubuntu), etc. — see README.csv, excel, and oracle extras. The matching [project.optional-dependencies] entries already existed but were undocumented.{object} and ${object} placeholder in SQL quality queries as the ODCS-spec name for the current schema object (alias for {model}/{table}) (#676)changelog command help text now advertises (url or path) for V1/V2 arguments, clarifying that HTTP/HTTPS URLs are accepted (#1162)test command now exits non-zero when a server is specified, but soda-core fails to connect or authenticate (#1181)check_type labels model_qualty_sql and field_quality_sql (#1187)import spark now emits a native Spark SQL physicalType (e.g. string) instead of Python repr (e.g. StringType()). Contracts imported using Spark in v0.11.0–v0.12.1 did not perform type checks and must be re-imported. (#1048)setuptools as a base dependency. soda-core’s env_helper.py imports from distutils.util import strtobool; distutils was removed from stdlib in Python 3.12 and stripped from python-build-standalone 3.11 builds. setuptools provides the distutils shim. Previously pulled in transitively via grpcio-tools; now required explicitly. Reverts #1199 — see soda-core#2091.--schema a deprecated alias for --json-schema to (will be removed in v0.13.0)This release introduces several changes to improve the usability of datacontract-cli for AI Agents.
Fix in v0.12.1: re-added
--schemaas alias for the new--json-schema(will be removed in v0.13.0)
| Command | Old option | New option |
|---|---|---|
lint, test, ci, publish, catalog |
--schema <PATH> (will work until v0.13.0) |
--json-schema <PATH> |
export, import |
--format <FORMAT> <OPTIONS> |
<FORMAT> <OPTIONS> (drop --format) |
| Export options: | ||
export --format dbt |
--format dbt |
dbt-models (format renamed) |
export --format great-expectations |
--sql-server-type <TYPE> |
--dialect <TYPE> |
export --format rdf |
--rdf-base <URI> |
--base <URI> |
export --format sql |
--sql-server-type <TYPE> |
--dialect <TYPE> |
export --format sql-query |
--sql-server-type <TYPE> |
--dialect <TYPE> |
| Import options: | ||
import --format bigquery |
--bigquery-[project\|dataset\|table] <NAME> |
--[project\|dataset\|table] <NAME> |
import --format dbt |
--dbt-model <NAME> |
--model <NAME> |
import --format glue |
--source <NAME>, --glue-table <NAME> |
--database <NAME>, --table <NAME> |
import --format iceberg |
--iceberg-table <NAME> |
--table <NAME> |
import --format unity |
--unity-table-full-name <NAME> |
--table <NAME> |
import --format spark |
--source <NAMES> |
--tables <NAMES> |
import |
--template |
dropped (was a no-op) |
The --schema option (referring to the ODCS JSON schema) was renamed to --json-schema to avoid confusion with --schema-name, which refers to the schema within the data contract to test for.
--debug (or set DATACONTRACT_CLI_DEBUG=1) to see the full traceback. (#1175)--help outputs (#1176)--checks option to test command to selectively run check categories: schema, quality, servicelevel (#678)--schema-name option to test command to test a specific schema instead of all schemas (#1079,#1085 @kelsoufi-sanofi)precision/scale for number types from logicalTypeOptions to customProperties (#1145,#1160 @davidb-tada)--server name is not found (#1153,#1161 @Ai-chan-0411)Thanks to @kelsoufi-sanofi for the new --schema-name option on test, and to @Schokuroff, @Ai-chan-0411, and @davidb-tada for their contributions.
ci command for CI/CD-optimized test runs: multi-file support, GitHub Actions annotations and step summary, Azure DevOps annotations, --fail-on flag, --json output (#1114)changelog command and API endpoint (#1118 @davidb-tada)--all-errors mode for datacontract lint to report all JSON Schema validation errors, with matching all_errors support in the Python library and API (#1125 @jmbenedetto)--schema-name option to custom model export (#978 @AntoineGiraud)double/jsonb, MySQL bare varchar, missing Trino types (#1110)Special thanks to @davidb-tada for the outstanding contribution of the new changelog command and API endpoint! Also thanks to @barry0451 for multiple quality fixes across the SQL exporter and markdown export, and to @AntoineGiraud and @jmbenedetto for their feature contributions.
logicalTypeOptions.format for SQL import from binary and uuid types (#790)NUMERIC(18, 4) (#1083)--output-format json)<br> with <br /> (#1030)duckdb an optional dependency. Install with pip install datacontract-cli[duckdb] for local/S3/GCS/Azure file testing.fastparquet and numpy core dependencies.customProperties or parsing from physicalType (e.g., decimal(10,2)) (#996)datacontract init to generate ODCS format instead of deprecated Data Contract Specification (#984)type field by updating open-data-contract-standard to v3.1.2 (#971)required: false are no longer incorrectly treated as required during validation, enabling proper schema evolution where optional fields can be added to contracts without breaking validation of historical data files (#977)type: decimal will be mapped to decimal.Decimal instead of float.impala server type.
This is a major release with breaking changes: We switched the internal data model from Data Contract Specification to Open Data Contract Standard (ODCS).
Not all features that were available are supported in this version, as some features are not supported by the Open Data Contract Standard, such as:
$ref (you can refer to external definitions via authoritativeDefinition)invalidValues)keys and values (use logical type map)scale and precision (define them in physicalType)The reason for this change is that the Data Contract Specification is deprecated, we focus on best possible support for the Open Data Contract Standard. We try to make this transition as seamless as possible. If you face issues, please open an issue on GitHub.
We continue support reading Data Contract Specification data contracts during v0.11.x releases until end of 2026. To migrate existing data contracts to Open Data Contract Standard use this instruction: https://datacontract-specification.com/#migration
--model option to --schema-name in the export command to align with ODCS terminology.*_converter.py to *_exporter.py for consistency (internal change).type: custom and engine: soda with raw SodaCL implementation.service_name attribute access to use ODCS field name serviceNamebreaking, changelog, and diff commands are now deleted (#925).terraform export format has been removed.expectation_suite_name to name in suite outputexpectation_type to type in expectationsdata_asset_type field from suite outputexpectation_type must update to use type{schema} and ${schema} placeholder in SQL quality checks to reference the server’s database schema (#957)DATACONTRACT_SQLSERVER_DRIVER environment variable to specify the ODBC driver (#959)2022-01-15) are now kept as strings instead of being converted to datetime objects, fixing ODCS schema validationtable and view fields from custom server importJSON type instead of invalid empty STRUCT() for objects without defined properties (#940)breaking, changelog, and diff commands are now deprecated and will be removed in a future version (#925)DATACONTRACT_ORACLE_CLIENT_DIR environment variable (#949)DataContract().import_from_source() as an instance method is now deprecated. Use DataContract.import_from_source() as a class method instead./test endpoint now supports publish_url parameter to publish test results to a URL. (#853)datacontract test now supports HTTP APIs.datacontract test now supports Athena.  instead of   for tab in Markdown export.datacontract import --format json: Import from JSON filesdatacontract api [OPTIONS]: Added option to pass extra arguments for uvicorn.run()pytest tests\test_api.py: Fixed an issue where special characters were not read correctly from file.datacontract export --format mermaid: Fixed an issue where the mermaid export did not handle references correctlyimport --spec odcs flagexport --format htmlexport --format mermaidunity importer now supports more than a single table. You can use --unity-table-full-name multiple times to import multiple tables. And it will automatically add a server with the catalog and schema name.datacontract catalog [OPTIONS]: Added version to contract cards in index.html of the catalog (enabled search by version)unity importer no uses the native databricks types instead of relying on spark types. This allows for better type mapping and more accurate data contracts.datacontract export --format mermaid Export
to Mermaid (#767, #725)datacontract export --format html: Adding the mermaid figure to the html exportdatacontract export --format odcs: Export physical type to ODCS if the physical type is
configured in config objectdatacontract import --format spark: Added support for spark importer table level comments (#761)datacontract import respects --owner and --id flags (#753)datacontract export --format sodacl: Fix resolving server when using --server flag (#768)datacontract export --format dbt: Fixed DBT export behaviour of constraints to default to data tests when no model type is specified in the datacontract modeldatacontract export --format odcs: Export physical type if the physical type is configured in
config object (#757)datacontract export --format sql Include datacontract descriptions in the Snowflake sql export (
#756)datacontract import --format excel: Import from Excel
template https://github.com/datacontract/open-data-contract-standard-excel-template (#742)datacontract test with DuckDB: Deep nesting of json objects in duckdb (#681)datacontract import --format csv produces more descriptive output. Replaced
using clevercsv with duckdb for loading and sniffing csv file.datacontract test --output-format junit --output TEST-datacontract.xml Export CLI test results
to a file, in a standard format (e.g. JUnit) to improve CI/CD experience (#650)
Added import for ProtoBuf
Code for proto to datacontract (#696)
dbt & dbt-sources export formats now support the optional --server flag to adapt the DBT column data_type to specific SQL dialectsisNullable and isUnique (#669)datacontract test now also executes tests for service levels freshness and retention (#407)datacontract import --format sql is now using SqlGlot as importer.datacontract import --format sql --dialect <dialect> Dialect can now to defined when importing
SQL.datacontract test --examples: This option was removed as it was not very popular and top-level
examples section is deprecated in the Data Contract Specification v1.1.0 (#628)odcs_v2 (#645)datacontract export --format custom: Export to custom format with Jinjadatacontract api now can be protected with an API keydatacontract serve renamed to datacontract apifields instead of schemaoptions instead of generator.options--template not resolving fileprimary field with primaryKey in exporters, importers, examples, and Jinja templates for backward compatibility. Fixes #518.datacontract export --format markdown (#545)not_null information as a datacontract required field (#547)tests to data_tests (#548)--dbt-model (#532)KeyError: 'fail' from happening when testing with SodaCLsuite_name the name of the expectation suite to exportengine used to run checkssql_server_type to define the type of SQL Server to use when engine is sqlInfo and Terms blocks.datacontract import now has --output option for saving Data Contract to fileDATACONTRACT_MAX_ERRORS. Furthermore, the primaryKey will be additionally added to the error message.Models and Fields blocks.datacontract catalog --files '*.yaml' now checks also any subfolders for such files.required arrayData Contract CLI now supports the Open Data Contract Standard (ODCS) v3.0.0.
datacontract test now also supports ODCS v3 data contract formatdatacontract export --format odcs_v3: Export to Open Data Contract Standard v3.0.0 (#460)datacontract test now also supports ODCS v3 anda Data Contract SQL quality checks on field and model leveldatacontract import --format odcs: Now supports ODSC v3.0.0 files (#474)datacontract export --format odcs: Now creates v3.0.0 Open Data Contract Standard files (alias to odcs_v3). Old versions are still available as format odcs_v2. (#460)datacontract export --format data-caterer: Export to Data Caterer YAMLdatacontract export --format jsonschema handle optional and nullable fields (#409)datacontract import --format unity handle nested and complex fields (#420)datacontract import --format spark handle field descriptions (#420)datacontract export --format bigquery handle bigqueryType (#422)datacontract export --format sqlalchemy: Export to SQLAlchemy ORM models (#399)datacontract publish now also accepts the DATACONTRACT_MANAGER_API_KEY as an environment variabledefinitions.fields) (#375)keys and values fields$ref are not always resolvedstring and format uuidmap and enum type for Avro schema import (#311)datacontract import --format spark: Import from Spark tables (#326)glue_table as parameter did not filter the tables and instead returned all tables from source database (#333)--schema option for the catalog and export command to provide the schema also locallydatacontract import --format jsonschema when description is missing (#300)datacontract test with case-sensitive Postgres table names (#310)datacontract serve start a local web server to provide a REST-API for the commandsGOOGLE_APPLICATION_CREDENTIALS as variable for connecting to bigquery in datacontract testtype attribute, don’t assume all imported models are tablesdatacontract export --format avro fixed array structure (#243)sqlserver (#196)datacontract export --format dbml: Export to Database Markup Language (DBML) (#135)datacontract export --format avro: Now supports config map on field level for logicalTypes and default values Custom Avro Propertiesdatacontract import --format avro: Now supports importing logicalType and default definition on avro files Custom Avro Propertiesconfig.bigqueryType for testing BigQuery typesimport through the glue-table parameter (#122)datacontract catalog Show search bar also on mobiledatacontract catalog Searchdatacontract publish: Publish the data contract to the Data Mesh Managerdatacontract import --format bigquery: Import from BigQuery format (#110)datacontract export --format bigquery: Export to BigQuery format (#111)datacontract export --format avro: Now supports Avro logical types to better model date types. date, timestamp/timestamp-tz and timestamp-ntz are now mapped to the appropriate logical types. (#141)datacontract import --format jsonschema: Import from JSON schema (#91)datacontract export --format jsonschema: Improved export by exporting more additional informationdatacontract export --format html: Added support for Service Levels, Definitions, Examples and nested Fieldsdatacontract export --format go: Export to go types formatazure (#146)delta tables on S3 (#24)datacontract catalog that generates a data contract catalog with an index.html file.datacontract export --format sql for Databricks dialectsdatacontract export --format great-expectationsdatacontract export --format sqlsql_type_converter to build checks.datacontract test --publish-to-opentelemetrydatacontract export --format protobufdatacontract export --format terraform (limitation: only works for AWS S3 right now)datacontract export --format sqldatacontract export --format sql-querydatacontract export --format avro-idl: Generates an Avro IDL file containing records for each model.datacontract changelog datacontract1.yaml datacontract2.yaml will now generate a changelog based on the changes in the data contract. This will be useful for keeping track of changes in the data contract over time.datacontract lint will now check for a variety of possible errors in the data contract, such as missing descriptions, incorrect references to models or fields, nonsensical constraints, and more.datacontract import --format avro will now import avro schemas into a data contract.datacontract export --format avroThis is a huge step forward, we now support testing Kafka messages. We start with JSON messages and avro, and Protobuf will follow.
datacontract import --format sql (#51)datacontract export --format dbt-sourcesdatacontract export --format dbt-staging-sqldatacontract export --format rdf (#52)datacontract breaking to detect breaking changes in between two data contracts.This is a breaking change (we are still on a 0.x.x version). The project migrated from Golang to Python. The Golang version can be found at cli-go
test Support to directly run tests and connect to data sources defined in servers section.test generated schema tests from the model definition.test --publish URL Publish test results to a server URL.export now exports the data contract so format jsonschema and sodacl.--file option removed in favor of a direct argument.: Use datacontract test datacontract.yaml instead of datacontract test --file datacontract.yaml.model is now part of exportquality is now part of exportdiff needs to be migrated to Python.breaking needs to be migrated to Python.inline needs to be migrated to Python.model command parameter, type -> format.schema command.models section for diff/breaking.model command.inline print to STDOUT instead of overwriting datacontract file.quality write input from STDIN if present.test command for Soda Core.diff/breaking.diff/breaking.diff/breaking.schema command: prints your schema.quality command: prints your quality definitions.inline command: resolves all references using the “$ref: …” notation and writes them to your data contract.--file, --with).diff command for dbt schema specification.breaking command for dbt schema specification.init when the file already exists.validate command to lint.check-compatibility command.