- 1、连续n天
例如连续12登陆,先日期进行从小到大进行排序,再rank ,然后日期减去rank的序号,有多少个相同的连续值就是连续多少天
- 2、数据只有本月和本月数添加第三列是之前12个月的数总和
(sum(ct2.CREATE_PROJECT_CURRENT_MONTH_CNT) over(ORDER BY ct2.CURRENT_MONTH_ID ASC ROWS BETWEEN 12 preceding AND 1 preceding)
如果原始数据有缺失月份可以先进行缺失月份的补齐默认值补0
- 3、数据只有本月和本月数添加第三列是上个月数第四列上年同月数
使用left join 配合case when 使用 灵活填充
- 4、数据只有本月和本月数添加第三列是本年截止当前数总和
通过年 来进行分组
- 5 、列转行 行转列
concat(固定字符串)
concat_ws(集合)
collect_set(列)
collect_list(列)
lateral view explode(集合)
lateral view explode(split(order_value,','))
- 6、数据类型转换
cast(xxx as xxx)
-
7、case when 灵活方式使用
-
8、脱敏
这是使用sql 的方式进行脱敏
regexp_replace(selphone,substr(selphone,4,4),'****')
还可以把脱敏封装为函数,手机号,身份证号,姓名,银行卡号等,需要脱敏时直接调用函数。
-9、自定义函数
## 临时函数使用
进入hive的交互shell中
1. 上传自定义udf的jar
add jar /path/to/lower.jar
2. 创建临时函数
create temporary function xxoo_lower as 'test.ql.LowerUDF';
3. 验证
select xxoo_lower("