hive语法

  • case when then else end
    CASE
WHEN s.s_sex = '1' THEN '男'
WHEN s.s_sex = '2' THEN '女'
ELSE '其他'
END as sex,

或者
    CASE s.s_sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他'
END as sex,

  • row_number()over(partition by a.user_id order by a.start_dt) as rn

 

  • Lag和Lead分析函数

Lag和Lead分析函数可以在同一次查询中取出同一字段的前N行的数据(Lag)和后N行的数据(Lead)作为独立的列。

嗯,反正每次看这些定义啥的都有点拗口,通俗点来说,就相当于表的自关联。

Hive 窗口函数之 lead() over(partition by ) 和 lag() over(partition by ) - 数据分析笔记(自用) - 博客园 (cnblogs.com)

  • NVL函数

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

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

  • where中的NOT函数

  • 从timestamp格式中提取小时等信息。

注意timestamp格式如:2021/4/1  0:18:04

时间戳格式的数字如:1565858389

如果要从timestamp中提取小时等信息需要先转化为时间戳然后再进行提取:

select from_unixtime(cast(unix_timestamp('2019-08-15 16:40:00') as bigint), 'HH')

hive 时间戳函数之unix_timestamp,from_unixtime - 小二货儿007 - 博客园 (cnblogs.com)

  • cross join函数

大数据之Hive:hive中的cross join函数_浊酒南街的博客-CSDN博客_hive中的cross join

posted @ 2021-10-18 09:21  我是SSP  阅读(48)  评论(0编辑  收藏  举报