遇到的问题
近日分析师提供一批样本数据,需要根据id和时间进行匹配,样本数据格式如下:

但是时间数仓中的数据时间却是年月日时分秒拼接而成的字符串,导致两者匹配失败,所以需要转换,数仓的数据:

解决问题分析过程:
-
不能使用hive 自带的date_format方法。 因为表中的月日时分秒前面没有补0,使用date_format会造成数据失真,例如下图时分秒的值是错误的:
(因为是时分秒不全,所以转换之前先拼接 :00 )

-
自定义一个spark的udf去实现,我用的python
from pyspark.sql.functions import udf
from pyspark.sql.types import StructType, StructField, StringType
# 实现过程 ,根据空格,冒号,斜杠分割,不够两位数的前面补0,然后再拼接起来,最后拼接00就可以
def get_new_applydatetime(x):
return '{}00'.format(''.join([str(z).zfill(2) for i in x.split('/') for j in i.split(' ') for z in j.split(':') ]))

最低0.47元/天 解锁文章
1527

被折叠的 条评论
为什么被折叠?



