Preview:
hours = lambda i: i * 60*60
w = (Window.partitionBy([col(x) for x in cols + []]).orderBy(col('Raised').cast("timestamp").cast("long")).rangeBetween(-hours(4), 0))
df = df.withColumn('SumAlarms', count("Rack").over(w))
downloadDownload PNG downloadDownload JPEG downloadDownload SVG

Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!

Click to optimize width for Twitter