pyspark Dataframe-截断小数列

时间:2019-04-10 14:33:43

标签: python pyspark apache-spark-sql truncate

我正在尝试截断该列中的值,并也取其最小值,如果条件不等于1,则应在其中放置20,我尝试使用math.trunc进行截断。 但存在截断错误

回溯(最近通话最近):   文件“”,第6行 AttributeError: trunc

这是我尝试过的:

lspf_ret.groupBy(col("lsbrnm"),col("lsdlp"),col("lsdlr")).agg({'lsdte':'min'}).select(
    lspf_ret.lsbrnm,
    lspf_ret.lsdlp,
    lspf_ret.lsdlr,
    datediff(lit('2019-02-28 00:00:00').cast(TimestampType()),
    concat(when( lit(math.trunc(col("min(lsdte)")/1000000)) ==1,"20").otherwise(''),
           when(math.trunc(((col("min(lsdte)")/1000000)==0,"19").otherwise("")),
           right(left(col("min(lsdte)").cast(StringType()),3),2),
    lit('-'),
    left(right(col("min(lsdte)").cast(StringType()),4),2),
    lit('-'),
    right(col("min(lsdte)").cast(StringType()),2),
    lit("00:00:00")
    ).cast(TimestampType()))))

以下是输入内容:

+------+-----+-------------+----------+
|lsbrnm|lsdlp|        lsdlr|min(lsdte)|
+------+-----+-------------+----------+
|  0135|  HP2|1061129000003|   1120929|
|  2266|  EF4| 160301212861|   1180224|
|  2266|  EF4| 170901365509|   1190225|
|  2266|  EF4| 180201399924|   1190225|
|  2266|  EF4| 180401421697|   1190201|
|  2266|  EF4| 131201027045|   1171130|
|  2266|  EF4| 140901072492|   1170301|
|  2266|  EF4|   1812M03566|   1190225|

0 个答案:

没有答案