我有兩列,在費用列中我有不同的費用,如post, neg, transfer,drawer費用
| 參考編號 | 收費 |
|---|---|
| 001 | POSTEX 100 美元 B^NEGO 200 美元 B^TRAN 150 美元 |
| 002 | POSTEX 400 美元 B^TRAN 350 美元 |
| 003 | NEGO 700 美元 B^TRAN 350 美元 |
| 004 | 抽取 700 美元 |
現在我想要的是這樣的:
| 參考編號 | 郵政信箱 | 尼高 | 傳輸 | 畫 |
|---|---|---|---|---|
| 001 | 郵政快遞 100 美元 | NEGO 200 美元 | 150 美元 | |
| 002 | 郵政快遞 400 美元 | 350 美元 | ||
| 003 | NEGO 700 美元 | 350 美元 | ||
| 004 | 抽取 700 美元 |
我試過使用lateral view split但它不起作用,還有其他方法可以使用 SparkSQL 或 MySql 嗎?
uj5u.com熱心網友回復:
regexp_extract在 Spark SQL 中使用函式的一種方法:
spark.sql(r"""
SELECT ref_no,
regexp_extract(charges, '(POSTEX USD \\d )', 1) AS POSTEX,
regexp_extract(charges, '(NEGO USD \\d )', 1) AS NEGO,
regexp_extract(charges, '(TRAN USD \\d )', 1) AS TRAN,
regexp_extract(charges, '(DRAW USD \\d )', 1) AS DRAW
FROM my_table
""").show()
# ------ -------------- ------------ ------------ ------------
#|ref_no| POSTEX| NEGO| TRAN| DRAW|
# ------ -------------- ------------ ------------ ------------
#| 001|POSTEX USD 100|NEGO USD 200|TRAN USD 150| |
#| 002|POSTEX USD 400| |TRAN USD 350| |
#| 003| |NEGO USD 700|TRAN USD 350| |
#| 004| | | |DRAW USD 700|
# ------ -------------- ------------ ------------ ------------
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/405142.html
標籤:
