上下文:我有一个带有登录时间的大表。我想计算指定时间段内(例如 3600 秒)内的滚动登录次数。
在 SQL/HQL 中,我将其指定为:
SELECT id, logon_time, COUNT(*) OVER(
PARTITION BY id ORDER BY logon_time
RANGE BETWEEN 3600 PRECEDING AND CURRENT ROW) as window_count
FROM df
作为 sparklyr 中的一种解决方法,我们可以这样写:
df %>%
mutate(window_count = sql('COUNT(*) OVER(
PARTITION BY id ORDER BY logon_time
RANGE BETWEEN 3600 PRECEDING AND CURRENT ROW'))
我想知道是否有现有的 sparklyr/dplyr 方法来实现这一点。 这个与将“window_frame”函数添加到 dbplyr 相关的问题看起来很有希望,但是我找不到指定“范围之间”的方法,以下操作仅生成“之间的行”窗口:
df %>%
group_by(id) %>%
window_frame(-3600, 0) %>%
window_order(logon_time) %>%
mutate(windowed_count = n())