Учитывая любой df, я хочу вычислить другой столбец для df с именем has_duplicates, а затем добавить столбец с логическим значением, определяющим, является ли каждая строка уникальной. Пример ввода df:
val df = Seq((1, 2), (2, 5), (1, 7), (1, 2), (2, 5)).toDF("A", "B")
Учитывая ввод columns: Seq[String]
, я знаю, как получить количество каждой строки:
val countsDf = df.withColumn("count", count("*").over(Window.partitionBy(columns.map(col(_)): _*)))
Но я не уверен, как это использовать для создания выражения столбца для последнего столбца, показывающего, является ли каждая строка уникальной.
Что-то вроде
def getEvaluationExpression(df: DataFrame): Column = {
when("count > 1", lit("fail").otherwise(lit("pass"))
}
, но счетчик должен быть вычислен на месте, используя запрос выше.