

# Clase de EvaluateDataQuality
<a name="glue-etl-scala-apis-glue-dq-EvaluateDataQuality"></a>


|  | 
| --- |
|  Calidad de datos de AWS Glue se encuentra en versión preliminar para AWS Glue, por lo que es una característica que está sujeta a cambios.  | 

**Paquete: com.amazonaws.services.glue.dq**

```
object EvaluateDataQuality
```

## Def apply
<a name="glue-etl-scala-apis-glue-dq-EvaluateDataQuality-defs-apply"></a>

```
def apply(frame: DynamicFrame,
            ruleset: String,
            publishingOptions: JsonOptions = JsonOptions.empty): DynamicFrame
```

Evalúa un conjunto de reglas de calidad de datos en relación con un `DynamicFrame` y devuelve un `DynamicFrame` nuevo con los resultados de la evaluación. Para obtener más información sobre Calidad de datos de AWS Glue, consulte [Calidad de datos de AWS Glue](glue-data-quality.md).
+ `frame`: el objeto `DynamicFrame` del que quiere evaluar la calidad de los datos.
+ `ruleset`: un conjunto de reglas de lenguaje de definición de calidad de datos (DQDL) en formato de cadena. Para obtener más información sobre DQDL, consulte la guía de [Referencia del lenguaje de definición de calidad de datos (DQDL)](dqdl.md).
+ `publishingOptions`: un diccionario que especifica las siguientes opciones para publicar los resultados y las métricas de la evaluación:
  + `dataQualityEvaluationContext`: una cadena que especifica el espacio de nombres en el que AWS Glue debe publicar las métricas de Amazon CloudWatch y los resultados de calidad de los datos. Las métricas agregadas aparecen en CloudWatch, mientras que los resultados completos aparecen en la interfaz de AWS Glue Studio.
    + Obligatorio: no
    + Valor predeterminado: `default_context`
  + `enableDataQualityCloudWatchMetrics`: especifica si los resultados de la evaluación de la calidad de los datos deben publicarse en CloudWatch. Especifique un espacio de nombres para las métricas mediante la opción `dataQualityEvaluationContext`.
    + Obligatorio: no
    + Valor predeterminado: False
  + `enableDataQualityResultsPublishing`: especifica si los resultados de calidad de los datos deben estar visibles en la pestaña **Data Quality** (Calidad de datos) de la interfaz de AWS Glue Studio.
    + Obligatorio: no
    + Valor predeterminado: true
  + `resultsS3Prefix`: especifica la ubicación de Amazon S3 en la que AWS Glue puede escribir los resultados de la evaluación de la calidad de los datos.
    + Obligatorio: no
    + Valor predeterminado: "" (cadena vacía)

## Ejemplo
<a name="glue-etl-scala-apis-glue-dq-EvaluateDataQuality-example"></a>

El siguiente código de ejemplo muestra cómo evaluar la calidad de los datos de un `DynamicFrame` antes de hacer una transformación de `SelectFields`. El script verifica que se cumplan todas las reglas de calidad de datos antes de intentar la transformación.

```
import com.amazonaws.services.glue.GlueContext
import com.amazonaws.services.glue.MappingSpec
import com.amazonaws.services.glue.errors.CallSite
import com.amazonaws.services.glue.util.GlueArgParser
import com.amazonaws.services.glue.util.Job
import com.amazonaws.services.glue.util.JsonOptions
import org.apache.spark.SparkContext
import scala.collection.JavaConverters._
import com.amazonaws.services.glue.dq.EvaluateDataQuality

object GlueApp {
  def main(sysArgs: Array[String]) {
    val spark: SparkContext = new SparkContext()
    val glueContext: GlueContext = new GlueContext(spark)
    // @params: [JOB_NAME]
    val args = GlueArgParser.getResolvedOptions(sysArgs, Seq("JOB_NAME").toArray)
    Job.init(args("JOB_NAME"), glueContext, args.asJava)
    
    // Create DynamicFrame with data
    val Legislators_Area = glueContext.getCatalogSource(database="legislators", tableName="areas_json", transformationContext="S3bucket_node1").getDynamicFrame()

    // Define data quality ruleset
    val DQ_Ruleset = """
      Rules = [ColumnExists "id"]
    """

    // Evaluate data quality
    val DQ_Results = EvaluateDataQuality.apply(frame=Legislators_Area, ruleset=DQ_Ruleset, publishingOptions=JsonOptions("""{"dataQualityEvaluationContext": "Legislators_Area", "enableDataQualityMetrics": "true", "enableDataQualityResultsPublishing": "true"}"""))
    assert(DQ_Results.filter(_.getField("Outcome").contains("Failed")).count == 0, "Failing DQ rules for Legislators_Area caused the job to fail.")

    // Script generated for node Select Fields
    val SelectFields_Results = Legislators_Area.selectFields(paths=Seq("id", "name"), transformationContext="Legislators_Area")

    Job.commit()
  }
}
```