1
我需要使用數據框轉換下面的SQL聯接。這個問題是我得到複製「關鍵」列左外複雜使用Seq(「key」)語法加入Spark DataFrames
val result_sql = sparkSession.sql(" select * from TAB_A a left outer join TAB_B b on a.key = b.key AND a.e_date between b.start_date and b.end_date ")
result_sql.printSchema()
root
|-- key: string (nullable = true)
|-- key: string (nullable = true)
|-- VAL: double (nullable = true)
所以我想這一點,但具有相同的重複列的「鑰匙」
val result_df = TAB_A.join(TAB_B,TAB_A.col("key") === TAB_B.col("key")
&& TAB_A.col("e_date").between(TAB_B.col("start_date"),TAB_B.col("start_date")),
"left_outer")
root
|-- key: string (nullable = true)
|-- key: string (nullable = true)
|-- VAL: double (nullable = true)
然後我就使用了序列嘗試登陸上去,但無法實施複雜的加入,面對錯誤
val result_df = TAB_A.join(TAB_B,Seq("key") && TAB_A.col("e_date").between(TAB_B.col("start_date"),TAB_B.col("start_date")),
"left_outer")
預期的模式:
root
|-- key: string (nullable = true)
|-- VAL: double (nullable = true)
任何實現上述邏輯而不重複列的最佳解決方案。
注意:我正在尋找使用spark數據框而不是spark_sql查詢的解決方案。
一種替代列只需在連接之後刪除一個'key'列即可。 – Shaido