我正在研究這個有兩列(date->date,sales_%->string)的資料集 -
| 日期 | 銷售量_% |
|---|---|
| 20/12/2021 | 50% |
| 21/12/2021 | 29% |
| 22/12/2021 | 60% |
| 2021 年 12 月 23 日 | 12% |
| 24/12/2021 | 75% |
| 25/12/2021 | 28% |
我想將該sales_%列轉換為十進制值(通過除以%100)。所需的輸出應如下所示 -
| 日期 | 銷售量 |
|---|---|
| 20/12/2021 | 0.5 |
| 21/12/2021 | 0.29 |
| 22/12/2021 | 0.6 |
| 2021 年 12 月 23 日 | 0.12 |
| 24/12/2021 | 0.75 |
| 25/12/2021 | 0.28 |
這是我嘗試過的 -
spark.sql("""select date, cast(cast(replace("sales_%",'%','') as integer)/100) as decimal(2,2)) from table_name""")
我得到空值。讓我知道是否有人有更好的主意。
uj5u.com熱心網友回復:
您參考的列名"sales_%"被 Spark 解釋為文字字串。您需要使用反引號而不是引號。此外,在除以 100 之前不需要轉換為整數。試試這個:
spark.sql("""
select date,
cast(replace(`sales_%`,'%','')/100 as decimal(2,2)) as sales
from table_name
""").show()
# ---------- -----
#| date|sales|
# ---------- -----
#|20/12/2021| 0.50|
#|21/12/2021| 0.29|
#|22/12/2021| 0.60|
#|23/12/2021| 0.12|
#|24/12/2021| 0.75|
#|25/12/2021| 0.28|
# ---------- -----
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/416368.html
標籤:
