有 2 個資料框有一個日期列,每個都有不同的名稱(start_date、finish_date)。我需要從第二個資料幀(從“finish_date”列)中獲取月份值,并將其與第一個資料幀(從“start_date”列)進行比較。日期格式為 MM/DD/YYYY 如果月份匹配則需要回傳另一列的對應值,如果不匹配則填充為 null
uj5u.com熱心網友回復:
使用函式提取月份org.apache.spark.sql.functions.month并在提取的列上加入兩個資料框。
例子:
val d1 = Seq("01/23/2019","06/24/2019","09/20/2019")
val d2 = Seq("04/23/2019","06/01/2008","09/05/2020")
import spark.implicits._
val df1 = d1.toDF("dateColStr").withColumn("dateCol1", to_date(col("dateColStr"),"MM/dd/yyyy")).drop("DateColStr")
val df2 = d2.toDF("dateColStr").withColumn("dateCol2", to_date(col("dateColStr"),"MM/dd/yyyy")).drop("DateColStr")
df1.printSchema()
// root
// |-- dateCol1: date (nullable = true)
df2.printSchema()
// root
// |-- dateCol2: date (nullable = true)
val jDF = df1.join(df2, month($"dateCol1") === month($"dateCol2"))
jDF.show()
// ---------- ----------
// | dateCol1| dateCol2|
// ---------- ----------
// |2019-06-24|2008-06-01|
// |2019-09-20|2020-09-05|
// ---------- ----------
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/416625.html
標籤:
