hive 可以通过with查询来提高查询性能,因为先通过with语法将数据查询到内存,然后后面其它查询可以直接使用
with
q1
as
(
select
key
from
src
where
key
=
'5'
)
select
*
from
q1;
-- from style
with
q1
as
(
select
*
from
src
where
key
=
'5'
)
from
q1
select
*;
-- chaining CTEs
with
q1
as
(
select
key
from
q2
where
key
=
'5'
),
q2
as
(
select
key
from
src
where
key
=
'5'
)
select
*
from
(
select
key
from
q1) a;
-- union example
with
q1
as
(
select
*
from
src
where
key
=
'5'
),
q2
as
(
select
*
from
src s2
where
key
=
'4'
)
select
*
from
q1
union
all
select
*
from
q2;
|
CTE in Views, CTAS, and Insert Statements
-- insert example
create
table
s1
like
src;
with
q1
as
(
select
key
, value
from
src
where
key
=
'5'
)
from
q1
insert
overwrite
table
s1
select
*;
-- ctas example
create
table
s2
as
with
q1
as
(
select
key
from
src
where
key
=
'4'
)
select
*
from
q1;
-- view example
create
view
v1
as
with
q1
as
(
select
key
from
src
where
key
=
'5'
)
select
*
from
q1;
select
*
from
v1;
-- view example, name collision
create
view
v1
as
with
q1
as
(
select
key
from
src
where
key
=
'5'
)
select
*
from
q1;
with
q1
as
(
select
key
from
src
where
key
=
'4'
)
select
*
from
v1;
|