Downsamplen naar dagelijkse granulariteit
Gegevens samenvoegen naar een hogere granulariteit is een veelvoorkomende analysetaak. Soms heb je een gegevensset met specifieke tijdstempels, maar wil je de geaggregeerde resultaten bekijken. In SQL Server zijn er verschillende technieken, afhankelijk van de gewenste granulariteit.
Voor deze oefeningen kijken we naar een fictieve dagspa. Het management van de spa heeft kortingsbonnen verstuurd naar potentiële nieuwe klanten voor de periode van 16 tot en met 20 juni 2020 en wil zien of deze campagne nieuwe bezoeken heeft opgeleverd.
In deze oefening bekijken we een van de eenvoudigste downsamplingtechnieken: een DATETIME2- of DATETIME-gegevenstype omzetten naar een gegevenstype met alleen een datum en geen tijdcomponent: het DATE-type.
Deze oefening maakt deel uit van de cursus
Tijdreeksanalyse in SQL Server
Oefeninstructies
- Downsample de starttijden van klantbezoeken naar dagelijkse granulariteit en aggregeer de resultaten.
- Vul de GROUP BY-clausule aan met alle niet-geaggregeerde waarden in de SELECT-clausule (maar zonder aliassen zoals
AS Day).
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
SELECT
-- Downsample to a daily grain
-- Cast CustomerVisitStart as a date
___(dsv.CustomerVisitStart AS ___) AS Day,
SUM(dsv.AmenityUseInMinutes) AS AmenityUseInMinutes,
COUNT(1) AS NumberOfAttendees
FROM dbo.DaySpaVisit dsv
WHERE
dsv.CustomerVisitStart >= '2020-06-11'
AND dsv.CustomerVisitStart < '2020-06-23'
GROUP BY
-- When we use aggregation functions like SUM or COUNT,
-- we need to GROUP BY the non-aggregated columns
___(dsv.CustomerVisitStart AS ___)
ORDER BY
Day;