in src/main/scala/deequ/deequ-suggestion-runner.scala [147:176]
def processSuggestions(glueDF: DataFrame, glueDB: String, glueTable: String): DataFrame = {
val suggestionResult = {
ConstraintSuggestionRunner()
.onData(glueDF)
.addConstraintRules(Rules.DEFAULT)
.run()
}
val suggestionDataFrame = suggestionResult.constraintSuggestions.flatMap {
case (column, suggestions) =>
suggestions.map { constraint =>
(column, constraint.description, constraint.codeForConstraint)
}
}.toSeq.toDS()
val uuid = udf(() => java.util.UUID.randomUUID().toString)
val now = LocalDateTime.now().toString()+"Z"
suggestionDataFrame
.withColumn("id", uuid())
.withColumn("database", lit(glueDB))
.withColumn("tablename", lit(glueTable))
.withColumnRenamed("_1", "column")
.withColumnRenamed("_2", "constraint")
.withColumnRenamed("_3", "constraintCode")
.withColumn("enable", lit("N"))
.withColumn("__typename", lit("DataQualitySuggestion"))
.withColumn("createdAt", lit(now))
.withColumn("updatedAt", lit(now))
}