对于hive-sql里的子查询不支持not in或in ,目前测试,应该是一个hive语句里只能支持一个not in 或in语句,多了不支持,对not in的替换用 left join id(关联字段)is null ,in的替换用left join id is not null替换,或者用left semi join(更优化)
not in 的替换示例
--原sql
select id from a
where id not in (select id from b);
--hive-sql替换示例
select id from a
left join b on b.id=a.id
where b.id is null;
in 替换示例
--原sql
select id from a
where id in (select id from b);
--hive-sql替换示例
select id from a
left join b on b.id=a.id
where b.id is not null;
--或
select id from a
left semi join b on a.id=b.id
hive杂记
hivesql里的日期函数不支持’%Y-%m-%d’这样的表达,虽然不会报错,但是不会起作用
支持’2019-06-16’这样的表达
顺便记下我自己做的一个比较复杂的案例
原sql
SELECT
count(DISTINCT t.passport_user_id) 新增用户数,
count( t.passport_user_id) 新增用户交易笔数,
sum(t.trade_amount) 新增用户交易金额
FROM t_trade t
INNER JOIN t_user u ON u.passport_user_