我正在尝试截断该列中的值,并也取其最小值,如果条件不等于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|