Skip to content

support for row level DQ result-report missing #223

Description

@evoisec

Hello folks, it seems u forgot to expose in Python PyDeequ, the following Deequ Scala method, which in turn makes it impossible to use PyDeequ to produce row level DQ report - only column/dataset SUMMARY level DQ reports are possible at the moment

def rowLevelResultsAsDataFrame( sparkSession: SparkSession, verificationResult: VerificationResult, data: DataFrame): DataFrame = {

why is that, any plans to rectify and when?

Activity

  1. github-actions commented on May 18, 2026

    @github-actions
    Contributor

    Thanks for raising this. You're correct — the rowLevelResultsAsDataFrame method from Deequ's Scala VerificationResult is not currently exposed in PyDeequ. This is a valid feature gap. We'll track this as an enhancement request to add a rowLevelResultsAsDataFrame classmethod to the VerificationResult class in pydeequ/verification.py, similar to how checkResultsAsDataFrame and successMetricsAsDataFrame are already wrapped. Appreciate you flagging it.

    This has also been flagged for our maintainer team to review.


    Generated by AI (model: us.anthropic.claude-opus-4-6-v1, prompt: cf3780e5) — may not be fully accurate. Reply if this doesn't help.

  2. nikolauspschuetz commented on Jun 28, 2026

    @nikolauspschuetz
    Contributor

    rowLevelResultsAsDataFrame has since been exposed in PyDeequ via #262 (merged). It is available as VerificationResult.rowLevelResultsAsDataFrame(spark_session, verificationResult, data) (pydeequ/verification.py), with a usage snippet in the README. That should cover the row-level DQ report use case described here, so I believe this can be closed.

  3. github-actions commented on Jun 28, 2026

    @github-actions
    Contributor

    Correct — VerificationResult.rowLevelResultsAsDataFrame() is now available in PyDeequ. You can use it as follows:

    from pydeequ.checks import Check, CheckLevel
    from pydeequ.verification import VerificationSuite, VerificationResult
    
    check = Check(spark, CheckLevel.Warning, "Review Check")
    
    checkResult = VerificationSuite(spark) \
        .onData(df) \
        .addCheck(
            check.isComplete("c") \
            .isContainedIn("a", ["foo", "bar", "baz"])) \
        .run()
    
    rowLevelResult_df = VerificationResult.rowLevelResultsAsDataFrame(spark, checkResult, df)
    rowLevelResult_df.show()

    This returns the original DataFrame with additional Boolean columns (named after the check description) indicating which rows passed or failed. Only checks with row-level-capable constraints (e.g., isComplete, isContainedIn, hasPattern, isUnique) produce output columns. Aggregate-only checks like hasSize are skipped.

    This issue can indeed be closed.


    Generated by AI (model: us.anthropic.claude-opus-4-6-v1, prompt: 67928783) — may not be fully accurate. Reply if this doesn't help.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions