从横向视图转换为配置单元中的 case 语句

Convert from lateral view to case statements in hive

我需要在 case 语句中放置以下代码:

select
count (*)
from db.tab1
lateral view explode(secondary.tertiary) exp as lv
where id IN ('6','1') and array_contains (lv.ci, "1");

我试过:

select 
  sum(
    case 
      when id IN ('6','1') 
          and array_contains ((lateral view explode(secondary.tertiary)).ci, "1") 
      then 1 
      else 0 
   end) 
from db.tab1;

但是出现错误。

select
  count(*),
  sum(if(..., 1, 0))
from db.tab1
  lateral view explode(secondary.tertiary) exp as lv
;

对于tabletab1上提供的SQL,实际逻辑是这样的:

  1. 分解字段 secondary.tertiary,将其别名为 lv,这会产生一个临时结果集 (table) tab2
  2. 一个类似连接的操作,将 tab2 的字段连接回 tab1 中的行,从而产生另一个中间 table tab3
  3. Select 来自 tab3where 条件适用。