hive常用命令记录
  xaeiTka4h8LY 18天前 15 0

1. Table相关操作

1.1 创建表

CREATE TABLE app.table_name
(
	id BIGINT COMMENT 'id',
	column_A string COMMENT '列A',
	column_B string COMMENT '列B',
	column_C string COMMENT '列C'
)
COMMENT '表描述';

1.2 增加列

ALTER TABLE app.table_name 
ADD COLUMNS 
(
	column_D string COMMENT '列D'
);

1.3 删除列

不支持delete column操作,可以使用replace columns实现字段删除操作;
删除column_C

ALTER TABLE dev.edi_partner_service_usage replace columns  (
	id BIGINT COMMENT 'id',
	column_A string COMMENT '列A',
	column_B string COMMENT '列B',
	column_D string COMMENT '列D'
);

2. 日期相关操作

2.1 日期串截取

取yyyy-MM-dd HH:mm:ss格式日期串的yyyy-MM-dd部分,使用字符串SUBSTR函数;

SUBSTR(create_time, 1, 7)

2.2 转换时间戳为 yyyy-MM-dd格式

from_unixtime(cast(logging_request_time/1000 as bigint), 'yyyy-MM-dd')

3. 使用case when实现行列互转

假设现在有如下数据(表 score )

姓名 科目 成绩
晓明 语文 100
晓明 数学 100
晓明 英语 100
小红 语文 100
小红 数学 100
小红 英语 100

我们希望以如下方式展示

姓名 语文 数学 英语
晓明 100 100 100
小红 100 100 100

可以使用case when来实现

select 	姓名,
		case when 科目='语文' THEN score ELSE 0 END 语文,
     	case when 科目='数学' THEN score ELSE 0 END 数学,
     	case when 科目='英语' THEN score ELSE 0 END 英语
from score
group by 姓名
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 18天前 0

暂无评论

推荐阅读
xaeiTka4h8LY