gopidesupavan opened a new pull request, #69413:
URL: https://github.com/apache/airflow/pull/69413

    <!-- SPDX-License-Identifier: Apache-2.0
         https://www.apache.org/licenses/LICENSE-2.0 -->
   
   Adds a new `apache-airflow-providers-dq` provider,
   `DbApiHook`-based data quality checks.
   
   Airflow already has SQL check operators, and many users rely on them for data
   quality today. This provider does not replace that path; it adds a small
   `DQRule` / `RuleSet` layer for checks that need stable rule identity, 
persisted
   history, and a connection to Airflow assets. That makes quality results 
easier
   to inspect over time, lets downstream asset consumers gate on recent quality,
   and also gives LLM-assisted workflows one schema to generate when proposing
   checks from table context. Execution still goes through existing `DbApiHook`
   connections.
   
   Ships:
   
   - `DQRule` and `RuleSet` models for named data quality rules.
   - Built-in SQL checks for common table and column checks, executed through
     `common.sql` / `DbApiHook`, plus `custom_sql` for database-specific or more
     complex checks.
   - `DQCheckOperator` and the `@task.dq_check` TaskFlow decorator.
   - A configurable results backend under `[dq] results_path` for task, run, and
     rule-level history.
   - A read-only API and minimal UI plugin for viewing task/run results and rule
     history.
   - Experimental asset helpers, `asset_quality()` and `require_quality()`, that
     attach provider-owned quality metadata to assets without changing Airflow
     core.
   - Documentation and example Dags covering end-to-end usage with and without
     LLM-generated rules.
   
   This first version is intentionally small. It focuses on a deterministic rule
   shape, SQL execution through `common.sql`, persisted results, and lightweight
   visibility in the Airflow UI. It is not trying to be a full data quality
   platform in the first drop.
   
   Design decisions:
   
   - Results are stored through an object-storage/local-file backend instead of
     adding new metadata DB tables in the first provider drop. This keeps the
     provider self-contained, avoids Airflow core migrations, and lets 
deployments
     choose a durable store such as S3/GCS/local files via `[dq] results_path`.
     The backend stores keyed JSON records for task runs, task instances, and
     per-rule history so the UI can read common views without scanning unrelated
     runs.
   - Asset support is implemented by extending assets with provider-owned 
metadata,
     not by changing Airflow core. Static quality configuration is attached to
     `Asset.extra["airflow.dq"]`; runtime summaries are attached to asset events
     under `extra["airflow.dq.result"]`. This lets users try asset quality 
gating
     now, while leaving room to discuss deeper asset integration later if the
     provider gets traction.
   - The first release starts with `DbApiHook` / SQL execution because Airflow
     already has strong provider coverage through `common.sql`. File and
     object-store data checks are left for a later iteration.
   
   Possible later iteration:
   
   - File/object-store based checks, where Airflow reads data from S3/GCS/local
     files or other object stores and runs quality rules directly against that
     data. This PR deliberately starts with the `DbApiHook` path first.
   - OpenLineage integration for data quality facets.
   ---
   
   ##### Was generative AI tooling used to co-author this PR?
   
   - [X] Yes
   
   Generated-by: <Agent Name and Version> following [the 
guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#gen-ai-assisted-contributions)
   
   <!--
   Thank you for contributing!
   
   Please provide above a brief description of the changes made in this pull 
request.
   Write a good git commit message following this guide: 
http://chris.beams.io/posts/git-commit/
   
   Please make sure that your code changes are covered with tests.
   And in case of new features or big changes remember to adjust the 
documentation.
   
   For user-facing UI changes, please attach before/after screenshots (or a 
short
   screen recording) so reviewers can assess the visual impact.
   
   Feel free to ping (in general) for the review if you do not see reaction for 
a few days
   (72 Hours is the minimum reaction time you can expect from volunteers) - we 
sometimes miss notifications.
   
   In case of an existing issue, reference it using one of the following:
   
   * closes: #ISSUE
   * related: #ISSUE
   -->
   
   ---
   
   ##### Was generative AI tooling used to co-author this PR?
   
   <!--
   If generative AI tooling has been used in the process of authoring this PR, 
please
   change below checkbox to `[X]` followed by the name of the tool, uncomment 
the "Generated-by".
   -->
   
   - [ ] Yes (please specify the tool below)
   
   <!--
   Generated-by: [Tool Name] following [the 
guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#gen-ai-assisted-contributions)
   -->
   
   ---
   
   * Read the **[Pull Request 
Guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#pull-request-guidelines)**
 for more information. Note: commit author/co-author name and email in commits 
become permanently public when merged.
   * For fundamental code changes, an Airflow Improvement Proposal 
([AIP](https://cwiki.apache.org/confluence/display/AIRFLOW/Airflow+Improvement+Proposals))
 is needed.
   * When adding dependency, check compliance with the [ASF 3rd Party License 
Policy](https://www.apache.org/legal/resolved.html#category-x).
   * For significant user-facing changes create newsfragment: 
`{pr_number}.significant.rst`, in 
[airflow-core/newsfragments](https://github.com/apache/airflow/tree/main/airflow-core/newsfragments).
 You can add this file in a follow-up commit after the PR is created so you 
know the PR number.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to