Aan de slagGa gratis aan de slag

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

Cursus bekijken

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;
Code bewerken en uitvoeren