Hive SQL - 标记,大小写

Hive SQL - Flag, Case when

我有一个名为 'test' 的 table,其中包含以下列: 我试图根据相同的 lead_id 如果 click = 1 和 impression = 1 进行标记,这可能会在多行中重复,因为每个事件(点击或印象)由于它们的原因而在单独的行中捕获不同的发生日期,然后将其标记为 1。

我有查询:

select click, imp, lead_id,
    case 
    when count(distinct lead_id) >1 and (click=1 and imp = 1) 
    then 1 
    else 0 
    end as flag
    from test
    group by click, imp, lead_id;

需要输出:

因此该标记仅标记 lead_id abc001,因为它在不同的日期有点击和展示。

使用解析函数如下:

select click, imp, lead_id, 
       case when sum(click) over (partition by lead_id) > 0
                 and sum(imp) over (partition by lead_id) > 0   
           then 1  
           else 0  
       end as flag 
  from test ;

lead_id的每个分区中获取clickimp的最大值。如果它们等于 1,则标记它们。这应该比对每个分区求和稍微更有效。

select 
    *, 
    case when max(click) over (partition by lead_id) = 1 and
              max(imp) over (partition by lead_id) = 1
         then 1
         else 0
         end as flag
from test;