O AWS Glue Data Quality está em uma versão pré-lançamento do AWS Glue e está sujeito a alterações. |
Pacote: com.amazonaws.services.glue.dq
object EvaluateDataQuality
Def apply
def apply(frame: DynamicFrame,
ruleset: String,
publishingOptions: JsonOptions = JsonOptions.empty): DynamicFrame
Avalia um conjunto de regras de qualidade de dados em relação a um DynamicFrame
e retorna um novo DynamicFrame
com os resultados da avaliação. Para saber mais sobre o AWS Glue Data Quality, consulte AWS Glue Data Quality.
-
frame
: oDynamicFrame
cuja qualidade de dados você deseja avaliar. -
ruleset
: um conjunto de regras em Data Quality Definition Language (DQDL) no formato de string. Para saber mais sobre DQDL, consulte o guia de Referência de Data Quality Definition Language (DQDL). -
publishingOptions
: um dicionário que especifica as seguintes opções para publicar resultados e métricas de avaliação:-
dataQualityEvaluationContext
: uma string que especifica o namespace com o qual o AWS Glue deve publicar as métricas e os resultados de qualidade dos dados do Amazon CloudWatch. As métricas agregadas aparecem no CloudWatch, enquanto os resultados completos aparecem na interface do AWS Glue Studio.-
Obrigatório: Não
-
Valor padrão:
default_context
-
-
enableDataQualityCloudWatchMetrics
: especifica se os resultados da avaliação de qualidade dos dados devem ser publicados no CloudWatch. Você especifica um namespace para as métricas usando a opçãodataQualityEvaluationContext
.-
Obrigatório: Não
-
Valor padrão: False
-
-
enableDataQualityResultsPublishing
: especifica se os resultados de qualidade dos dados devem estar visíveis na guia Data Quality (Qualidade de dados) na interface do AWS Glue Studio.-
Obrigatório: Não
-
Valor padrão: true
-
-
resultsS3Prefix
: especifica o local no Amazon S3 em que o AWS Glue pode gravar os resultados da avaliação de qualidade dos dados.-
Obrigatório: Não
-
Valor padrão: "" (string vazia)
-
-
Exemplo
O código de exemplo a seguir demonstra como avaliar a qualidade dos dados de um DynamicFrame
antes de realizar uma transformação SelectFields
. O script verifica se todas as regras de qualidade de dados são aprovadas antes de tentar a transformação.
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()
}
}