从字符串转换为小数时为空(36,12)

h7appiyu  于 2021-05-24  发布在  Spark
关注(0)|答案(1)|浏览(332)

无法将字符串转换为十进制,它返回null。

from pyspark.sql.types import DecimalType
    df=spark.read("default.data_table")
    df2=df.column("invoice_amount",df["invoice_amount"].cast('decimal(36,12)'))
    //display(df)
    display(df2)

发票金额为“15860461.48”(字符串)在表数据表中
如果我打印df-它显示发票金额为“15860461.48”,但是当我打印df2时,它显示空值

ou6hu8tu

ou6hu8tu1#

你用的是什么版本?在我的例子中,它在我使用spark3.0.1的地方运行得很好。

from pyspark.sql.functions import *
from pyspark.sql.types import *

data = ['15860461.48']
df = spark.createDataFrame(data, StringType())

df.show(truncate=False)

df2 = df.withColumn('value', col('value').cast('decimal(36, 12)'))
df2.show(truncate=False)

+-----------+
|value      |
+-----------+
|15860461.48|
+-----------+

+---------------------+
|value                |
+---------------------+
|15860461.480000000000|
+---------------------+

相关问题