首页 > 其他分享 >hive高频使用的拼接函数及“避坑”

hive高频使用的拼接函数及“避坑”

时间:2023-10-26 12:01:59浏览次数:33  
标签:角色 ...... hive 拼接 避坑 字符串 null concat

hive高频使用的拼接函数及“避坑”

说到拼接函数应用场景和使用频次还是非常高,比如一个员工在公司充当多个角色,我们在底层存数的时候往往是多行,但是应用的时候我们通常会只需要一行,角色字段进行拼接,这样join其他表的时候呢也不会造成数据被重复引用计算。

hive高频使用的拼接函数及“避坑”_字段名

1、拼接多个字符串concat_null(......)

hive高频使用的拼接函数及“避坑”_字段_02

从上图中的说明中我们可以看到,在应用场景中,通常使用concat_null(......)防止由于有null存在导致的拼接异常。

2. 用分隔符拼接多个字符串concat_ws(......)

hive高频使用的拼接函数及“避坑”_字段名_03

需要注意的是concat_ws(......)可以直接处理掉null,而且如果将sep分割符使用''(空值),则功能和concat_null(......)一样。

3、collect_set、collect_list实现列转行

hive高频使用的拼接函数及“避坑”_字段名_04

由于collect_set在实现列转行的时候进行了去重处理,自然实际应用中应用的也会更多。

4、"避坑" null和非字符串字段

由于在实际生产环境中,我们所使用的引擎有所不同,兼容性也不同。有时候NULL和非字符串字段在查询时也会出现问题。

1、通常我们可以把null进行替换。if(字段名 is null,'',字段名)

2、非字符串转化为字符串 cast(字段名 as string)

SELECT  id,
  concat_ws(',',collect_set(
      cast(if(角色 is null,'',角色) as string)
      )) AS `角色`     
  -- 将每个id对应多个的角色去重组合放到一行,并使用英文','分隔角色
FROM emp
WHERE dt = '20230618'
GROUP BY 1



标签:角色,......,hive,拼接,避坑,字符串,null,concat
From: https://blog.51cto.com/u_16147578/8032110

相关文章

  • 【Python 千题 —— 基础篇】字符串拼接
    题目描述题目描述我们在编程过程中经常会遇到把不同字符串拼接在一起的情况,从而更直观地展示给用户我们所要表达的信息。本题将给出两个字符串,请依次将这两个字符串拼接在一起。输入描述输入两个字符串,用回车分开。输出描述程序将输入的两个字符串依次拼接在一起,并输出拼接后的字符......
  • Benchmark 测试字符串拼接的性能
    funcBenchmarkStringf(b*testing.B){ b.ResetTimer() fori:=0;i<b.N;i++{ varstrstring forj:=0;j<numbers;j++{ str=fmt.Sprintf("%s%d",str,j) } } b.StopTimer()}funcBenchmarkStringAdd(b*testing.B){ b.R......
  • Hive学习笔记:nvl和coalesce函数的区别
    nvl函数和coalesce函数都是用来处理空值的函数,但略有不同。注意:非NULL值为NULL,如果是'','','null','NULL'等视为字符串,返回参数本身。一、nvl函数nvl只能处理2个参数,如果第1个不是null,则返回第1个参数,否则返回第2个参数。selectnvl(1,2);--1selectnvl(1,n......
  • C# 一个简陋轻便的Json字符串拼接类
    有的时候我们要以Json格式的形式传递参数,用模型或匿名类传给json库转的话,感觉很浪费,但是自己手动拼的话有比较麻烦,因此封装了一个拼接类,非常简陋JsonStringBuilderusingSystem;usingSystem.Text;namespaceConsoleApp{///<summary>///简单的json字符串构建......
  • hive基本操作
    间隔几年,又开始频繁写hive的sql,整理一点关于hive常用的基本语句,只有天天写的时候才很熟练,过几年很容易遗忘的东西。hive创建表droptableifexistsods.tb_fdn_testtable;createtableifnotexistsods.tb_fdn_testtable(citystringcomment'地市'......
  • 三维模型数据拼接中的几何坐标变换方法实现
    三维模型数据拼接中的几何坐标变换方法实现   利用几何坐标变换后纠正技术实现倾斜摄影三维模型数据的拼接是一种常用的方法。下面将详细介绍如何利用这一技术实现拼接过程。1、数据准备:首先,需要获取不同视角下的倾斜摄影影像数据。这些影像应该覆盖同一场景,并且在重叠......
  • oracle打开/关闭归档日志ARCHIVELOG
    1.使用SQLPlus登录用户名:sqlplus密码:assysdba 2.查询数据库是否是归档模式:查询结果为“ARCHIVELOG”表示数据库为归档模式SELECTlog_modeFROMv$database;3.关闭数据库shutdownimmediate;4.启动数据库mount模式startupmount;5.启动归档日志alte......
  • ORA16401archivelogrejectedbyRFS解决方法
    之前做DataGuard做了一次Switchover切换,之后standby库就报如下错误:ThuJul2908:03:292010Errorsinfile/dba/oracle/admin/newccs/udump/newccs_rfs_19602.trc:ORA-16401:archivelogrejectedbyRFSThuJul2908:03:292010Errorsinfile/dba/oracle/admin/newc......
  • Hive学习笔记:多列求最大值、最小值
    一、最大值当在Hive中需要对多列数据求最大值时,可以使用函数greatest(a,b,c,d)实现。selectgreatest(a,b,c)from( select10asa,20asb,30asc)dd;--结果:30举个具体栗子:计算用户消费时,如果用户套餐有最低消费129元的话,不满12......
  • 农业全要素生产率的计算(使用HiveQL分析)
    需求:工作中需要计算农业全要素生产率数据,需要利用HiveQL进行数据仓库提取,然后进行转换式计算,最后需要进行要素生产效率分析,用于后续的深度数据挖掘。解决:CREATETABLEIFNOTEXISTSmytable( col1STRING, col2INT, col3DOUBLE)ROWFORMATDELIMITEDFIELDSTERMIN......