这是我第一次在网上发帖子。所以我完全有可能违反了很多张贴规则。如果是这种情况,请让我知道,我将确保不会重复他们。
我一直在尝试在hive中的同一个查询中获得滚动平均数和绝对数,下面是我得到的结果。这在红移中非常有效,但在Hive中给了我一个错误。似乎不支持select语句中的子查询。想知道我是否可以得到一些关于如何修改这个查询以从配置单元中得到相同结果的指针。
select
a.ds,
a.traffic_source,
a.device_type,
count(distinct a.unique_id) as daily_deduped_visits_human,
(select
count(distinct b.unique_id)
from
scratch.unique_human_id b
where
b.ds >= a.ds - 28
and b.ds <= a.ds
and a.traffic_source = b.traffic_source
and a.device_type = b.device_type
)/28 as rolling_28_day_average_visits_human
from
scratch.unique_human_id a
group by 1,2,3
1条答案
按热度按时间oyjwcjzk1#
您的示例中的技术称为相关子查询,并且往往非常慢。我建议使用带有range子句的窗口函数。
首先,在子查询中,计算每天的度量。然后在main中选择use window functions(使用窗口函数)来计算滚动总和/平均值。请参阅红移文档中的更多窗口函数示例。