scala - Deequ 检查的结果数据帧的列有何含义?

标签 scala dataframe apache-spark amazon-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_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/

相关文章:

java - Scala 只接受 List 中的 String 或 Int 通用案例类

scala - 无法使用 spark-sftp api 将数据帧写入目标 sftp 服务器

python - seaborn 热图 pandas 在 isnull 上的计算

python - 在 spark 上使用 python lime 作为 udf

java - CompiledScript 的多个实例

scala - Spark : difference of semantics between reduce and reduceByKey

r - 创建一个数据框,每列中包含随机数

r - 处理存储在列表中的数据框

sql - 如何获得 Spark RDD 的 SQL row_number 等价物?

apache-spark - 如何在 PySpark 中使用 Spark 的 registerDataFrameAsTable?