取消
顯示的結果
而不是尋找
你的意思是:

火花時,並不能夠解決列正確連接數據幀

匿名
不適用

你好所有的,

我使用pyspark (python 3.8) / spark3.0磚。當運行這個DataFrame加入:

next_df = days_currencies_matrix.alias (' a ')。加入(data_to_merge.alias (b), [days_currencies_matrix。dt = = data_to_merge。RATE_DATE days_currencies_matrix。CURRENCY_CODE = = data_to_merge。CURRENCY_CODE],“左”)。\ (days_currencies_matrix選擇。CURRENCY_CODE days_currencies_matrix.dt.alias (RATE_DATE), data_to_merge。AVGYTD data_to_merge。ENDMTH data_to_merge。AVGMTH data_to_merge。AVGWEEK data_to_merge。AVGMTD)

我得到這個錯誤:

列AVGYTD # 67187, AVGWEEK # 67190, ENDMTH # 67188, AVGMTD AVGMTH # 67189, # 67191是模棱兩可的。它可能是因為你加入幾個數據集在一起,和一些這些數據集是相同的。這一列指向一個數據集,但火花無法找出哪一個。請別名與不同的名稱通過數據集的數據集。“加入他們之前,指定列使用限定名稱,例如:. join (df.as df.as (“a”) (“b”)、“一美元。美元id”>“b.id”)”。你也可以設置spark.sql.analyzer。failAmbiguousSelfJoin假禁用這張支票。

這是告訴我上麵列屬於一個以上的數據集。

這是為什麼發生?代碼告訴火花源dataframe;此外,days_currencies_matrix隻有2列:dt和CURRENCY_CODE。

是因為days_currencies_matrix DataFrame實際上是建立在data_to_merge嗎?是懶惰的相關評估或這是一個錯誤嗎?

順便說一句,這個版本沒有問題:

1接受解決方案

接受的解決方案

匿名
不適用

好吧,我發現這一點……

select()是關於next_df列和我用錯誤的方式解決他們(使用錯誤的數據集名稱)。

在原帖子查看解決方案

4回複4

Hubert_Dudek1
尊敬的貢獻者三世

在我看來問題在選擇不加入。請把你的代碼兩個步驟(加入並選擇)。

加入後請使用next_df驗證模式

. schema或next_df.printSchema ()

請核實列名。

如果你沒有找到你的問題請在這裏分享模式days_currencies_matrix, data_to_merge

next_df和我將努力的幫助。

匿名
不適用

好吧,我發現這一點……

select()是關於next_df列和我用錯誤的方式解決他們(使用錯誤的數據集名稱)。

匿名
不適用

@Alessio帕爾馬,你好!我的名字是風笛手,我是一個主持人的社區。馬克無論你會很高興回答你的問題可能會發現其他成員解決方案更快?

匿名
不適用

如果是隻有“選為最佳”,今天我做到了。

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map