deequ检查的结果dataframe的列表示什么?

zengzsys  于 2021-07-12  发布在  Spark
关注(0)|答案(1)|浏览(444)

所以,我在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 Dataframe类似于:

+------------+-----------+------------+--------------------+-----------------+--------------------+
|       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_status 以及 constraint_status . 它们有何不同?我的支票结果应该在后一张,对吗?那么前者意味着什么呢?
我在deequ的博客里也找不到任何关于这个的清晰。有人能解释一下吗?

zyfwsgd6

zyfwsgd61#

check_status 是系统的总体状态 Check 你跑的那群人。这取决于天气 CheckLevel 以及约束状态。如果你看代码:

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 . 否则就是成功了。

相关问题