sql Hive HQL子句运行顺序及执行计划,别名

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql Hive HQL子句运行顺序及执行计划,别名相关的知识,希望对你有一定的参考价值。

-- 参考: http://www.cnblogs.com/jiangxiaoxian/p/7155636.html
-- hive语句执行顺序: from... where.... select...group by... having ... order by...

where,group by,having,order by同时使用,执行顺序为

(1)where过滤数据
(2)对筛选结果集group by分组
(3)对每个分组进行select查询,提取对应的列,有几组就执行几次
(4)再进行having筛选每组数据
(5)最后整体进行order by排序

-- 测试语句
SELECT
	ad_id AS col1,
	ad_uin AS col2,
	COUNT( *) AS aggCol
FROM
	dim.dim_szad_material_mapping
WHERE
	dt = '2018-05-15'
	-- [AND col1 = '0'] -- 无法使用别名
GROUP BY
  -- [col1, col2] -- 无法使用别名, 因为别名的生效时机在group by之后, having之前
	ad_id,
	ad_uin
HAVING
  col1 = '0' -- 可以使用别名
ORDER BY
	col1 -- 可以使用别名

以上是关于sql Hive HQL子句运行顺序及执行计划,别名的主要内容,如果未能解决你的问题,请参考以下文章

大数据系列Hive安装及web模式管理

Spark SQL与Hive的关系

hive核心组件及流程(一)

hive的sql的执行计划。

hive高阶1--sql和hive语句执行顺序explain查看执行计划group by生成MR

【Hive】Hive Join 介绍