【问题标题】:Impala - Running Same Query Over Multiple DatesImpala - 在多个日期上运行相同的查询
【发布时间】:2020-03-20 22:27:45
【问题描述】:

我有下面的 Impala 查询,它设置为计算数据集中某一天而不是前一天的设备数量。我想在多个日期(过去一年中的每一天)运行此查询。

在 Impala 中有没有办法做到这一点?我知道没有循环功能,但不确定是否有某种方法可以将日期数组传递给变量,以便查询在连续日期上运行。谢谢!

SELECT COUNT(DISTINCT devices) 
FROM request
WHERE devices NOT IN (
    SELECT devices
    FROM request
    WHERE forwarded_dt =  CAST((CAST('2020-03-17' as timestamp)) as BIGINT)*1000
    )  
AND forwarded_dt =  CAST((CAST('2020-03-18' as timestamp)) as BIGINT)*1000;

【问题讨论】:

    标签: sql loops date impala


    【解决方案1】:

    您可以使用lag()。我认为:

    select day,
           count(*) as num_devices_on_day,
           sum(case when prev_day = day - interval '1' day then 0 else 1 end) as new_devices_on_day
    from (select device, date_trunc('day', timestamp) as day,
                 lag(date_trunc('day', timestamp)) over (order by min(timestamp)) as prev_day
          from requests
         ) r
    group by day;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-21
      • 2017-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多