Сравнение столбцов в свечах scala - PullRequest
0 голосов
/ 29 января 2020

У меня есть 2 таких кадра.

scala> df1.show

+---+---------+
| ID|    Count|
+---+---------+
|  1|20.565656|
|  2|30.676776|
+---+---------+

scala> df2.show

+---+-----------+
| ID|      Count|
+---+-----------+
|  1|10.00998787|
|  2|    40.7767|
+---+-----------+

Как можно я возьму максимум столбца после соединения?

Ожидаемый результат.

+---+---------+
| id|    Count|      
+---+---------+
|  1|20.565656|
|  2|40.7767  |    
+---+---------+

Ответы [ 3 ]

1 голос
/ 29 января 2020

Вы можете сделать это:

df1.union(df2).groupBy("ID").max("Count").show()

+---+----------+
| ID|max(Count)|
+---+----------+
|  1| 20.565656|
|  2|   40.7767|
+---+----------+
1 голос
/ 29 января 2020

После объединения обоих фреймов данных создайте UDF с 2 столбцами подсчета в качестве входных данных и в UDF верните наибольшее значение между этими столбцами.

  • Всегда полезно использовать UDF, когда нам нужно получить один столбец на основе нескольких столбцов.
0 голосов
/ 29 января 2020
scala> df.show()
+---+---------+
| ID|    Count|
+---+---------+
|  1|20.565656|
|  2|30.676776|
+---+---------+


scala> df1.show()
+---+-----------+
| ID|      Count|
+---+-----------+
|  1|10.00998787|
|  2|    40.7767|
+---+-----------+


scala> df.alias("x").join(df1.alias("y"), List("ID"))
                    .select(col("ID"), col("x.count").alias("Xcount"),col("y.count").alias("Ycount"))
                    .withColumn("Count", when(col("Xcount") >= col("Ycount"), col("Xcount")).otherwise(col("Ycount")))
                    .drop("Xcount", "YCount")
                    .show()
+---+---------+
| ID|    Count|
+---+---------+
|  1|20.565656|
|  2|  40.7767|
+---+---------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...