写一个相对复杂的sql,来看一下执行窗口函数时,数据的流转情况:
select
id,
sq,
cell_type,
rank,
row_number() over..., --分区
order by rank, --窗口函数的order
[naturl_rank:row_number(),r:rank()] --窗口函数调用
)
由于row_number(),rank...by cell_type, --分区
order by id, --窗口函数的order
[dr:dense_rank()] --窗口函数调用
)
由于dense_rank()的窗口与前两个函数不同,因此需要再...这里给附上spark sql的执行计划,可以仔细品一下(hive sql的执行计划实在太长,但套路基本是一样的):
spark-sql> explain select id,sq,cell_type,rank...从执行计划中,可以看到sql中 if 函数的执行位置如下:
spark-sql> explain select id,sq,cell_type,rank,if(cell_type!