private def example(channelRollups: Seq[String]): Seq[(String, String)]={
seqOfElement.flatMap(first => seqOfElement.
filter(second => first.toLowerCase() < second.toLowerCase()).
map((first, _)))
}
def addProductCol(df: DataFrame, cols: (String, String)): DataFrame = {
df.withColumn(s"${cols._1}_${cols._2}", df(cols._1) * df(cols._2))
}
def addAllProductCols(df: DataFrame): DataFrame = {
colPairs = example(exampleSeq)
colPairs.foldLeft(df)(addProductCol)
}
Вывод
colPairs = Seq(("left", "right"), ("middle", "right"))
+----+------+-----+
|left|middle|right|
+----+------+-----+
| 2| 3| 5|
| 7| 11| 13|
| 17| 19| 23|
+----+------+-----+
+----+------+-----+----------+------------+
|left|middle|right|left_right|middle_right|
+----+------+-----+----------+------------+
| 2| 3| 5| 10| 15|
| 7| 11| 13| 91| 143|
| 17| 19| 23| 391| 437|
+----+------+-----+----------+------------+
Вместо непосредственного добавления столбца в DataFrame, можем ли мы изменить в DataFrame => DataFrame или мы можем сказать преобразование ??
def example2 : DataFrame => DataFrame = {
dataFrame => {
dataFrame.
withColumn(Column, when(col(ORDER_DATETIME_KEY).isNotNull, 1).otherwise(0))
}
}
Так в основном я хочу сделать первый пример наподобие example2, в котором я буду возвращать dataType как DataFrame => DataFrame
, а не как DataFrame