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

一行分割成多個行基於列值在火花SQL

rishigc
新的因素

你好,

我想把記錄在表2記錄基於列值。請參閱下麵的示例。輸入表顯示3類型的產品及其價格。特定產品(行)隻注意到其相應的列值。其他列零。

我的要求是,隻要產品列值(連續)複合(如有多個產品,如螺栓+刷),記錄必須分成兩行- 1行每個複合產品類型。所以,在這個例子中,注意第二行被分成2行- > 1行“栓”,另一個用於“刷”,與他們的價格(我從相應的列。e在這種情況下,“栓”= 3.99美元,“刷”= 6.99美元)

請注意:複合產品的值可以有最多2產品如本例中所示(如螺栓+刷)

輸入:

CustIdProductHammerBoltBrush1234Hammer 5.99美元 7639年 螺栓+刷 3.99美元 6.99美元6322刷

6.99美元

要求輸出:

CustIdProductPrice1234Hammer 5.99美元7639年 螺栓 3.99美元 7639年 6.99美元6322刷6.99美元

誰能請幫我解決。這需要解決了Spark-SQL隻

問候

1回複1

User16869509900
價值貢獻

嗨@rishigc

您可以使用下麵的類似。

選擇爆炸(arrays_zip(分裂(產品,“+”),把(價格,' + '))與df product_and_price

df。withColumn (“product_and_price”,爆炸(arrays_zip(分裂(產品,“+”),分裂(價格,' + ')))。選擇(“CustId”、“prodAndPrice美元。產品", $"prodAndPrice.Price").show()

df是dataframe。

分裂
函數列分成數組的產品和價格的數組。這兩個數組將被合並
arrays_zip
,所以n產品將被映射到n個價格。然後合並後的數組使用爆炸
爆炸
,因此數組中的每個元素,將成為一個單獨的行。

請讓我們知道它的工作原理。

謝謝

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

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

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

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

Baidu
map