Hive将带有斜杆的时间拼接成字符串
遇到的问题
近日分析师提供一批样本数据,需要根据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(':') ]))# 方法一:注册成spark的udf
get_new_applydatetime_udf = udf(get_new_applydatetime,StringType())
df_sample = df_sample.withColumn("user_applydatetime_raw",get_new_applydatetime_udf("user_applydatetime"))# 方法二:注册成spark-sql可用的udf
spark.udf.register("user_applydatetime_hive",get_new_applydatetime)
df_sample.createOrReplaceTempView('t1')
spark.sql("""select user_applydatetime_hive(user_applydatetime) from t1 """).show()
最终实现的结果:
Hive将带有斜杆的时间拼接成字符串相关推荐
- oracle sql 拼接遇到参数值,sql 将某一列的值拼接成字符串
) set @str='' -- 必须先赋值 ))+',' from( select [objid],sfrq from tablename ) tb order by tb.sfrq print @ ...
- java list 拼接 字符串数组_把数组所有元素排序,并按照“参数=参数值”的模式用“”字符拼接成字符串...
/** * 把数组所有元素排序,并按照"参数=参数值"的模式用"&"字符拼接成字符串 * @param params 需要排序并参与字符拼接的参数组 * ...
- C语言基础:时间转换成字符串 strftime的代码
将内容过程中经常用的一些内容段做个记录,下边内容段是关于C语言基础:时间转换成字符串 strftime的内容,希望能对大伙有一些用处. #include <stdio.h> #includ ...
- JSP EL表达式 将数组拼接成字符串
前言 el表达式拼接字符串 将数组拼接成字符串 EL表达式拼接字符串的方法 使用String类型的concat方法. ${jbstr.concat(',')} 示例 有一个数组(jbList),需要将 ...
- mysql 将查询所得结果集的某一字段拼接成字符串
前言 mysql 5.5.40 将查询所得结果集的某一字段拼接成字符串 将菜单树的所有根节点(parent_id=0)的id拼接成字符串. sql 代码: select GROUP_CONCAT(me ...
- MySQL中将查询所得结果集的某一字段拼接成字符串
group_concat:将查询所得结果集的某一字段拼接成字符串 SELECT GROUP_CONCAT(t.cabinet_no SEPARATOR ';') FROM tb_stockorder ...
- SqlServer中将某列的值拼接成字符串
应用场景: 向用户表中查询出需要发短信的管理员的手机号码,拼接成字符串批量处理. 将内容转换为xml格式内容 查询语句: SELECT substring(NewCol,0,LEN(T.NewCol) ...
- PHP 数组拼接成字符串
PHP[知识分享] 数组拼接成字符串 <?php // 格式: [二维数组] Array ( [0] => Array ( [topicid] => 1 ) [1] => Ar ...
- 前端JS数组问题: 数组去重, 字符串分割成数组, 数组拼接成字符串
1. 数组去重: Array.from(new Set(arr_name)) let arr1 = ['张三','李四','王五','李四','赵六','张三'];let arr2 = Array.f ...
最新文章
- mysql index 使用方法_mysql index索引使用方法
- java二维码生成并可以转换
- 昨夜洪峰抵达主城,重庆人是这么过的......
- # 20180908 2018-2019-2 《密码与安全新技术专题》第9周作业
- strictmath_Java StrictMath cbrt()方法与示例
- oracle11 如何启动企业管理器
- 2023联考管综论说文阅卷标准及提分计划:附2010-2022年真题
- Cookie的设置域名domain与跨域的问题
- DevOps 转型实践
- Python·pip升级失败报异常之解决方案
- 太阳能光伏发电基础知识科普教学QY-TF11
- bigemap如何导入矢量边界范围下载地图(KML/KMZ/SHP)
- 本科3-4万、硕士6万、博士8万!杭州这个区发力引人
- [ZT]“你可以安全关机”解决方案
- 360手机刷机:360N7lite刷机
- org.dom4j 解析XML
- 第二证券|抖音发布三季度安全透明度报告,整治贩卖焦虑广告近3万条
- “国航”助飞旅日华侨华人子女说中文的梦想
- 03. Vuepress1.x 设置 favicon.ico 图标
- 要到九寨旅游的朋友我对你有话要说哦!!!933