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 姓名