微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Deequ 检查的结果数据框的列表示什么?

如何解决Deequ 检查的结果数据框的列表示什么?

所以,我在 Spark 中运行了一个简单的 Deequ 检查,结果如下:

val verificationResult: VerificationResult = { VerificationSuite()
  .onData(dataset)
  .addCheck(
    Check(CheckLevel.Error,"Review Check")
      .isComplete("col1")
      .isUnique("col2")
      .hasSize(_ == count_date)
      .satisfies(
          "abs(col4 - col5) <= 0.20 * col5","value(col4) lies between value(col5)-20% and value(col5)+20%"
    )
  .run()
}

val result1 = checkResultsAsDataFrame(spark,verificationResult)

现在,我的 result1 数据框看起来像这样:

+------------+-----------+------------+--------------------+-----------------+--------------------+
|       check|check_level|check_status|          constraint|constraint_status|  constraint_message|
+------------+-----------+------------+--------------------+-----------------+--------------------+
|Review Check|      Error|       Error|CompletenessConst...|          Success|                    |
|Review Check|      Error|       Error|UniquenessConstra...|          Failure|Value: 7.62664794...|
|Review Check|      Error|       Error|SizeConstraint(Si...|          Success|                    |
|Review Check|      Error|     Success|ComplianceConstra...|          Success|                    |
+------------+-----------+------------+--------------------+-----------------+--------------------+

我对 check_statusconstraint_status 列感到困惑。它们有何不同?我的检查结果应该是后者吧?那么前者意味着什么?

我在 deequ blog 中也找不到任何明确的说明。有人可以解释一下吗?

解决方法

check_status 是您运行的 Check 组的总体状态。这取决于 CheckLevel 和约束状态。如果您查看 code :

val anyFailures = constraintResults.exists { _.status == ConstraintStatus.Failure }

val checkStatus = (anyFailures,level) match {
  case (true,CheckLevel.Error) => CheckStatus.Error
  case (true,CheckLevel.Warning) => CheckStatus.Warning
  case (_,_) => CheckStatus.Success
}

如果约束中有任何失败,则 check_status = CheckLevel。否则就成功了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。