合并数据字符串和时间字符串

时间:2018-12-11 20:22:33

标签: dataframe databricks azure-databricks

您将如何做? Databricks 4.1,Spark 2.3

您将获得两列数据框: 1)‘dt’,字符串,如图所示。 2)‘tm’字符串,如图所示。 我在这篇文章中添加了第三列。

您的工作是创建第3列“ dttm”,时间戳,格式,前导零,精度和时区不如id正确组合“ dt”和“ { {1}}”。

我在这篇文章中使用了PySpark,但我还没有结婚。

tm

我已经经历了数十个例子和尝试,到目前为止,我还没有找到最终可行的解决方案。

2 个答案:

答案 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)

请看一下built-in functions

您要查看:

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软件包。