所以,我在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的博客里也找不到任何关于这个的清晰。有人能解释一下吗?
1条答案
按热度按时间zyfwsgd61#
check_status
是系统的总体状态Check
你跑的那群人。这取决于天气CheckLevel
以及约束状态。如果你看代码:如果约束中有任何失败,那么
check_status = CheckLevel
. 否则就是成功了。