Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何检查';第1列和第27列;在+-20%的值范围';第2列和第27列;使用亚马逊Deequ?_Scala_Dataframe_Apache Spark_Amazon Deequ - Fatal编程技术网

Scala 如何检查';第1列和第27列;在+-20%的值范围';第2列和第27列;使用亚马逊Deequ?

Scala 如何检查';第1列和第27列;在+-20%的值范围';第2列和第27列;使用亚马逊Deequ?,scala,dataframe,apache-spark,amazon-deequ,Scala,Dataframe,Apache Spark,Amazon Deequ,所以,我在spark中使用Amazon Deequ,我有一个数据帧'df',其中两列的类型为'Long'或numeric。我只想检查一下: value(column1)在所有行的value(column2)-20%和value(column2)+20%之间 我不确定在这里放什么支票: val verificationResult: VerificationResult = { VerificationSuite() .onData(df) .addCheck( Check(Che

所以,我在spark中使用Amazon Deequ,我有一个数据帧'df',其中两列的类型为'Long'或numeric。我只想检查一下:

value(column1)在所有行的value(column2)-20%和value(column2)+20%之间

我不确定在这里放什么支票:

val verificationResult: VerificationResult = { VerificationSuite()
  .onData(df)
  .addCheck(
    Check(CheckLevel.Error, "Review Check")
      //.funtionToCheckThis()
    )
  .run()
具有可以将列表达式作为条件参数的方法

要检查
column1
是否介于
-20%column2
+20%column2
之间,可以使用如下表达式:

| column1-column2 |<0.20*column2

column1介于0.80*column2和1.20*column2之间

val verificationResult: VerificationResult = {
  VerificationSuite()
    .onData(df)
    .addCheck(
      Check(CheckLevel.Error, "Review Check")
        .satisfies(
          "abs(column1 - column2) <= 0.20 * column2",
          "value(column1) lies between value(column2)-20% and value(column2)+20%"
        )
    ).run()
}
val验证结果:验证结果={
验证套件()
.onData(df)
.addCheck(
检查(CheckLevel.Error,“查看检查”)
.满足(

“abs(第1列-第2列)谢谢。这就像预期的一样。作为一个附加组件,Deequ有没有办法只标记不符合此检查的行呢?比如,如果哪怕是一行失败,我们是否可以识别该行,比如说,它在'column3'中的值?@DebapratimChakraborty,据我所知,这是不可能的。但是要识别t您可以尝试使用Deequ中失败的约束的否定来过滤数据df。再次感谢-这也很好。最后一个问题-假设Deequ中的检查失败,它会给出一条约束消息,如:
Value:0.76不满足约束要求!
这是否意味着我的76%数据失败e检查,24%通过?如果没有,那么我们在检查时有没有办法直接从Deequ获得该指标(%passed,%failed)?@DebapratimChakraborty
0.76
表示“仅通过76%”