不支持的子查询表达式“'Fashion'”:子查询表达式仅指外部查询表达式
Unsupported SubQuery Expression ''Fashion'': SubQuery expression refers to Outer query expressions only
我正在使用以下查询:
select UserId, Category from customer_data
where (Category in ('Fashion','Electronics'))
and (Action in ('Click','AddToCart','Purchase'))
and customer_data.UserId not in (select ustomer_data.UserId from customer_data where customer_data.Category='Fashion' and customer_data.Category='Electronics') ;
出现以下错误:
hive> Unsupported SubQuery Expression ''Fashion'': SubQuery expression refers to Outer query expressions only.
我不确定这个错误,我是否也需要在外部查询中为每个列使用 table 名称,例如 customer_data.Category?
你能帮忙吗?
示例数据:
UserId,ProductId,Category,Action
1,111,Electronics,Browse
2,112,Fashion,Click
3,113,Kids,AddtoCart
4,114,Food,Purchase
5,115,Books,Logout
6,114,Food,Click
7,113,Kids,AddtoCart
8,115,Books,Purchase
9,111,Electronics,Click
10,112,Fashion,Purchase
3,112,Fashion,Click
12,113,Kids,AddtoCart
期望的输出:
Output File
• userID
• category
使用分析函数计算 fashion_flag 每个 UserId:
select UserId, Category
from
( --calculate User level flags
select UserId, Category,
max(fashion_flag) over (partition by UserId) as user_fashion_flag,
max(electronics_flag) over (partition by UserId) as user_electronics_flag
from
(--maybe you do not need this subquery, if case will work inside max() over
select UserId, Category,
case when Category='Fashion' then 1 else 0 end fashion_flag,
case when Category='Electronics' then 1 else 0 end electronics_flag
from customer_data
where (Category in ('Fashion','Electronics'))
and (Action in ('Click','AddToCart','Purchase'))
) s
) s
where user_fashion_flag+user_electronics_flag=1 --not allow two flags at a time
;
我正在使用以下查询:
select UserId, Category from customer_data
where (Category in ('Fashion','Electronics'))
and (Action in ('Click','AddToCart','Purchase'))
and customer_data.UserId not in (select ustomer_data.UserId from customer_data where customer_data.Category='Fashion' and customer_data.Category='Electronics') ;
出现以下错误:
hive> Unsupported SubQuery Expression ''Fashion'': SubQuery expression refers to Outer query expressions only.
我不确定这个错误,我是否也需要在外部查询中为每个列使用 table 名称,例如 customer_data.Category? 你能帮忙吗?
示例数据:
UserId,ProductId,Category,Action
1,111,Electronics,Browse
2,112,Fashion,Click
3,113,Kids,AddtoCart
4,114,Food,Purchase
5,115,Books,Logout
6,114,Food,Click
7,113,Kids,AddtoCart
8,115,Books,Purchase
9,111,Electronics,Click
10,112,Fashion,Purchase
3,112,Fashion,Click
12,113,Kids,AddtoCart
期望的输出:
Output File
• userID
• category
使用分析函数计算 fashion_flag 每个 UserId:
select UserId, Category
from
( --calculate User level flags
select UserId, Category,
max(fashion_flag) over (partition by UserId) as user_fashion_flag,
max(electronics_flag) over (partition by UserId) as user_electronics_flag
from
(--maybe you do not need this subquery, if case will work inside max() over
select UserId, Category,
case when Category='Fashion' then 1 else 0 end fashion_flag,
case when Category='Electronics' then 1 else 0 end electronics_flag
from customer_data
where (Category in ('Fashion','Electronics'))
and (Action in ('Click','AddToCart','Purchase'))
) s
) s
where user_fashion_flag+user_electronics_flag=1 --not allow two flags at a time
;