案例一:window function尽量不要做嵌套处理
例如:sum([REALAMT]) over (partition by date_format([FILDATE],'yyyy-MM-dd'))
建议改为:
ETL先增加一个列来代表日期:date_format([FILDATE],'yyyy-MM-dd')
然后:sum([REALAMT]) over (partition by [日期])
案例二:多条件判断+筛选尽量做成一次筛选
例如:判断是否包含a、b、c字段,并筛选不包含这些字段的数据
建议改为:
案例三:对时间字段的处理优化
例如:DATEDIFF(NOW(),'2017-07-05') - COUNT(DISTINCT(SUBSTR([业务时间],0,10)))
substr( 一个timestamp类型)处理是非常慢的,要对所有数据都做一遍查询。
建议改为:
DATEDIFF(NOW(),'2017-07-05') - COUNT(DISTINCT(to_date([业务时间])))