1、Airflow认识加深 sla_miss: 这张表记录的是我们在dag文件中设置的sla告警,sla的意思就是,某个任务设置了截止时间,如果某个它到了截止时间仍然没有启动、或者运行成功,那么就会记录到这张表中,作为告警使用;
2、case null when 是无效的
select case null
when null then 0
when 5 then 1
else -1
end;
--out: -1
3、
Q:这holo有慢查询,会引起flink任务挂了 ?
A:同一个集群,只做了逻辑资源隔离,不一定保证不受影响
4、impala 的hours_add 函数,hive没有,需要找替代。
功能:最晚归还时间为5点,其他时间向上取整。
--hql ,case hour(return_time) when 5 then 5 when 23 then 0 else hour(return_time)+1 end as return_time_hour --impala ,cast( --最晚归还时间不能>=6点,即5点多归还的订单划为5点归还,其他情况则向上取整(如2:30取3) case when from_unixtime(unix_timestamp(hours_add(return_time,1)),'HH')='5' then '5' else from_unixtime(unix_timestamp(hours_add(return_time,1)),'HH') end as int) as return_time_hour
功能:
给租借时间(最早六点)升序排序–即最早第一
给归还时间(最晚五点)降序排序–即最晚第一
--优先给[6,24)点的租借时间订单升序排序,凌晨[0-6)点租借的订单再二级根据租借时间升序排序 ,row_number() over(partition by rent_shop_id,rent_terminal_no order by (case when rent_time_hour>=6 then 1 else 2 end) asc,rent_time_hour asc) as rent_asc_rnk --优先给凌晨[0-6)点的归还时间订单降序排序,[6-24)点租借的订单再二级根据租借时间降序排序 ,row_number() over(partition by rent_shop_id,rent_terminal_no order by (case when return_time_hour<6 then 2 else 1 end) desc,return_time_hour desc) as return_desc_rnk
5、Linux下使Shell 命令脱离终端在后台运行
nohup 你的shell命令 &
敲完命令后会返回一个进程号PID ,ps -ef | grep PID 可查看运行情况
参考:Linux下使Shell 命令脱离终端在后台运行
6、开发设计过程
场景: 每日有需要循环更新近一段时间数据 的场景
方式一、 归档方式进行合并
例子:完整的订单数据,背景是三个月前开始的订单信息以后不会再更新。
1、 归档数据初始化 ,上线前就可以准备好, 每个月月初先用历史归档 + 马上归档的这个月数据 合并成最新归档
初始化归档是 21.1 -21.11月
2、 每日计算的最新数据(滚动范围-- 每次计算 统计日期往前推三个月的1号 至当日的数据) 21.12 - 至今
3、 归档数据的更新:
跨月的时候 如 到了22.4月1号,则每日计算的数据范围是 22.1-至今 , 归档数据 + 新增,往归档数据里插入 21.12月数据
完整的订单数据
合并过程: 归档数据mm/d + 日滚动计算数据d
如果处理成d表,则没有记录中间变化过程; 如处理成dt, 则就有变化快照, 但是这种方式存储消耗比较大
数据归档操作: 分为月归档 、日归档两种
方式二、 直接每日处理全量范围的数据, 全部刷新计算,该方式弊端较为明显,如果数据量一大,则会引起任务延迟、计算资源消耗较大
方式三、 每日选取要计算的数据范围 进行全量更新(如近一天更新) -- 处理成中间表 d表 , 和dt0 ,not in 切割有变化和无变化数据进行合并
dt保留日期,近七天



