表设计原则
- 保留源表的字段,添加加工字段,如下
with t1 as ( select id ,name ,address from t11 ), t2 as ( select id ,name1 ,address1 from t22 ) select t1.id -- 留下原始值,方便进行数据复原 ,t1.name ,t1.address ,t2.name1 ,t2.address1 -- 记录最终结果,方便下游数据进行引用 ,coalesce(t1.name,t2.name1) finally_name ,coalesce(t1.address,t2.address1) finally_address from t1 left join t2 on t1.id = t2.id create table finally_result( id string ,name string comment 'xxx' ,address string comment 'xxx' ,name1 string comment 'xxx' ,address1 string comment 'xxx' ,finally_name string comment 'xxx' ,finally_address string comment 'xxx' )
排序
-
select id ,name ,age from t1 order by age 以上代码排序会有问题,如下 id name age 1 aa 18 2 aa 18 引入排序的差异字段,这样能让数据限制在一个固定的方向中 select id ,name ,age from t1 order by age ,id
表之间的inner Join
-
因为join涉及到表数据的留下与删除 如果join中小表为全量表,且没有时间标记数据中的添加也删除,这个表应该设计为拉链表, 这样做的原因是在对已经加工的数据进行复原
全量表进行Join时
-
表要取最大分区,同时要限制表中的数据为小于或者等于当天时间