Contexte: J'ai une grande table avec des heures de connexion. Je veux calculer un nombre variable d'ouvertures de session dans une période spécifiée (par exemple 3600 secondes).Comment utiliser la clause spark-sql "range between" pour une opération de fenêtre avec sparklyr
Dans SQL/HQL je voudrais préciser ce que:
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
Pour contourner ce problème dans sparklyr, nous pourrions écrire cela comme:
df %>%
mutate(window_count = sql('COUNT(*) OVER(
PARTITION BY id ORDER BY logon_time
RANGE BETWEEN 3600 PRECEDING AND CURRENT ROW'))
Je veux savoir s'il y a un moyen existant de sparklyr/dplyr de réaliser ceci. This issue relative à l'ajout de la fonction « window_frame » à dbplyr semble prometteur, mais je ne peux pas trouver un moyen de spécifier « plage entre », l'opération ci-dessous génère seulement « lignes entre » fenêtre:
df %>%
group_by(id) %>%
window_frame(-3600, 0) %>%
window_order(logon_time) %>%
mutate(windowed_count = n())