Impala - 在多个日期上运行相同的查询
Posted
技术标签:
【中文标题】Impala - 在多个日期上运行相同的查询【英文标题】:Impala - Running Same Query Over Multiple Dates 【发布时间】: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;
【问题讨论】:
【参考方案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;
【讨论】:
以上是关于Impala - 在多个日期上运行相同的查询的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Hadoop 上运行的 Cloudera Impala 的 python impyla 查询中转义字符