数仓常用函数

1.get_json_object()函数

2. nvl函数

3. COALESCE 函数

日期函数:

1 )date_format函数( 根据格式整理日期 )

2 )date_add函数(加减 日期 )

3 ) next_day 函数

4) last_day 函数( 求当月最后一天日期 )


1.get_json_object() 函数

常用在DWD层处理用户行为日志的场景

1)数据

[ {"name":" 大郎 ","sex":"男","age":"25"} ,{"name":" 西门庆 ","sex":"男","age":"47"}]

2)取出第一个json对象

hive (gmall)>

select get_json_object('[ {"name":" 大郎 ","sex":"男","age":"25"} ,{"name":" 西门庆 ","sex":"男","age":"47"}]', '$[0]' );

结果是: {"name":" 大郎 ","sex":"男","age":"25"}

注意:要用$符号

3)取出第一个json的age字段的值

hive (gmall)>

SELECT get_json_object( '[ {"name":" 大郎 ","sex":"男","age":"25"} ,{"name":" 西门庆 ","sex":"男","age":"47"}]' , " $[0].age " );

结果是:2 5

2. nvl函数

1)基本语法

NVL(表达式1,表达式2)

如果表达式1为空值,NVL返回值为表达式2的值,否则返回表达式1的值。

该函数的目的是把一个空值(null)转换成一个实际的值。其表达式的值可以是 数字型、字符型和日期型 但是表达式1和表达式2的数据类型 必须为同一个类型

2 )案例实操

hive (gmall)> select nvl(1,0);

1

hive (gmall)> select nvl(null,"hello");

hello

3.COALESCE 函数(返回参数列表中第一个非 NULL 值)
COALESCE(value1, value2, ..., valuen)

其中, value1, value2, ..., valuen 表示多个可能的值,它们会按顺序被依次检查,直到找到第一个非 NULL 值为止,最终将该值返回。

7.1 . 2 日期处理函数

常用在DWS层处理数据的场景,日期的定位

1 )date_format函数( 根据格式整理日期 )

hive (gmall)> select date_format('2020-06-14','yyyy-MM');

2020-06

2 )date_add函数(加减 日期 )

hive (gmall)> select date_add('2020-06-14',-1);

2020-06-13

hive (gmall)> select date_add('2020-06-14',1);

2020-06-15

3 ) next_day 函数

(1)取 当前天的下 一个 周一

hive (gmall)> select next_day('2020-06-14','MO');

2020-06-15

说明 :星期一到星期日的英文 (Monday,Tuesday、Wednesday、Thursday、Friday、Saturday、Sunday)

注意:传第二个参数时,可以传英文全称,也可以传前两个字母或前三个字母。

(2)取当前周的周一(先定位到下周一,再减7)

hive (gmall)> select date_add(next_day('2020-06-14','MO'),-7) ;

2020-06-8

4 ) last_day 函数( 求当月最后一天日期 )

hive (gmall)> select last_day('2020-06-14');

2020-06- 3 0

7.1 . 3 复杂数据类型定义

1 )map结构数据定义

map < string,string>

2 ) array 结构数据定义

array<string>

3 ) struct 结构数据定义

struct<id:int,name:string,age:int>

4 ) struct 和array嵌套定义

array<struct< id:int,name:string,age:int >>

up-d60baf0241daebe986e4e52d1dbce4924c8.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
数仓常用的SQL查询技巧有很多,以下是一些常见的技巧和建议: 1. 使用窗口函数:窗口函数(Window Function)是SQL中强大的功能之一,它可以在查询结果中对数据集进行分组、排序和聚合操作,常用的窗口函数包括RANK、ROW_NUMBER、LEAD、LAG等。 2. 优化查询性能:在处理大规模数据时,优化查询性能是非常重要的。可以通过创建合适的索引、避免全表扫描、使用合适的连接方式等方式来提高查询效率。 3. 使用子查询:子查询(Subquery)可以嵌套在主查询中,用于限制结果集或作为计算字段的来源。使用子查询可以简化复杂的查询逻辑,并提高可读性。 4. 使用临时表或表变量:当需要多次使用相同的结果集时,可以将查询结果存储在临时表或表变量中,避免重复查询和计算,提高性能。 5. 使用CTE(Common Table Expression):CTE是一种临时命名的查询结果集,可以在查询中多次引用,提高可读性和维护性。 6. 使用合适的连接方式:在进行表之间的关联查询时,选择合适的连接方式(如INNER JOIN、LEFT JOIN、RIGHT JOIN等)可以确保查询结果正确且高效。 7. 利用索引进行查询优化:合理创建和使用索引可以加快查询速度,尤其是在大型数据表中。根据查询的字段和条件,选择合适的索引策略,可以显著提高查询性能。 8. 使用视图(View):视图是一种虚拟的表,可以将复杂的查询逻辑封装为一个视图,使查询更简洁、可复用。 9. 使用合适的聚合函数:根据需要,选择合适的聚合函数(如SUM、AVG、COUNT、MAX、MIN等)进行数据统计和分析。 10. 使用合适的数据类型和字段命名:选择合适的数据类型可以节省存储空间和提高查询效率,良好的字段命名可以提高代码可读性和维护性。 这些只是一些常见的SQL查询技巧,实际应用中还会根据具体场景和需求进行调整和优化。希望对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值