您将如何做? Databricks 4.1,Spark 2.3
您将获得两列数据框:
1)‘dt
’,字符串,如图所示。
2)‘tm
’字符串,如图所示。
我在这篇文章中添加了第三列。
您的工作是创建第3列“ dttm
”,时间戳,格式,前导零,精度和时区不如id正确组合“ dt
”和“ { {1}}”。
我在这篇文章中使用了PySpark,但我还没有结婚。
tm
我已经经历了数十个例子和尝试,到目前为止,我还没有找到最终可行的解决方案。
答案 0 :(得分:1)
您可以在“ T”处分割日期字符串,以仅提取日期部分,然后可以将其与时间字符串结合使用,以获得代表您要创建的实际时间戳记的字符串。然后,只需将其转换为正确的格式即可。
from pyspark.sql.functions import concat, split, lit, from_unixtime, unix_timestamp
dt_tm = concat(split(df1.dt, "T")[0], lit(" "), df1.tm)
df1 = df1.withColumn("dttm", from_unixtime(unix_timestamp(dt_tm, 'yyyy-MM-dd hh:mm:ss a')).cast("timestamp"))
答案 1 :(得分:0)
您要查看:
SELECT * FROM TABLE1
WHERE
TO_NUMBER(REPLACE(ACCUMP,'%','')) < 75
UNION
SELECT * FROM TABLE1
WHERE ORDERS IN
(
SELECT ORDERS FROM TABLE1
GROUP BY ORDERS
HAVING COUNT(*) > 1
);
这些或其他DateTime函数的组合将实现您的目标。 Spark 2.x对操纵日期时间提供了强大的支持,但是,如果您确实无法使用内置函数来完成日期时间,则始终可以使用Joda Time Java软件包。