Kontext: Ich habe eine große Tabelle mit Anmeldezeiten. Ich möchte eine rollende Anzahl von Anmeldungen innerhalb eines bestimmten Zeitraums (z. B. 3600 s) berechnen.Wie verwende ich die Spark-sql "Bereich zwischen" -Klausel für eine Fensteroperation mit Sparklyr
In SQL/HQL i dies als angeben würde:
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
Als Abhilfe können in sparklyr, könnten wir dies als schreiben:
df %>%
mutate(window_count = sql('COUNT(*) OVER(
PARTITION BY id ORDER BY logon_time
RANGE BETWEEN 3600 PRECEDING AND CURRENT ROW'))
Ich möchte wissen, ob es eine ist existierender sparklyr/dplyr-Weg, um dies zu erreichen. This issue in Bezug auf das Hinzufügen der „window_frame“ -Funktion dbplyr sieht vielversprechend aus, aber ich kann nicht einen Weg geben „Bereich zwischen“, die unter Betrieb finden erzeugt nur eine „Zeilen zwischen“ Fenster:
df %>%
group_by(id) %>%
window_frame(-3600, 0) %>%
window_order(logon_time) %>%
mutate(windowed_count = n())