Clase de EvaluateDataQuality - AWS Glue

Clase de EvaluateDataQuality

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

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.

  • 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).

  • 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.

      • Requerido: 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.

      • Requerido: 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.

      • Requerido: 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.

      • Requerido: no

      • Valor predeterminado: "" (cadena vacía)

Ejemplo

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() } }