所以,我在 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_status
列和 constraint_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
。否则就成功了。
关于scala - Deequ 检查的结果数据帧的列有何含义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66380835/