Dit hoofdstuk bevat enkele best practices voor data-analyse.
Geef altijd een datumbereik op
Alle timeslot- en onbewerkte datatabellen zijn gepartitioneerd op kalenderdatum.
Daarom moeten alle query's een verplicht datumbereik bevatten op basis van de kolom “calendar_date”.
Voorbeeld:
SELECT * FROM timeslots_1h_occupancy_data_v1
WHERE calendar_date >= “2025-10-10”
Volgens het ontwerp zijn alle bezettingstimeslots beschikbaar vanaf 2024-01-01.
Elke nacht na 12 uur 's middags worden nieuwe rijen toegevoegd, die de waarden van de vorige dag weergeven.
Bestaande rijen worden niet gewijzigd of opnieuw berekend.
Daarom raadt Spacewell data-engineers aan om incrementeel laden van timeslotwaarden in hun eigen BI-infrastructuur te gebruiken. Deze werkwijze verlaagt de kosten en zorgt voor betere responstijden en efficiëntie.
Gegevens tijdens kantooruren bekijken
De bezettingstimeslots van 15 minuten worden continu geregistreerd. Dit betekent dat er per locatie 24 x 4 = 96 rijen beschikbaar zijn per kalenderdag. Hetzelfde geldt voor de timeslots van 1 uur, waarvoor per kalenderdag en per locatie 24 rijen beschikbaar zijn.
Hierdoor kan er over een doorlopende tijdlijn worden gerapporteerd.
Sommige data-analisten willen echter mogelijk alleen kantooruren bekijken. De kolom “hour_of_day” is een eenvoudige manier om hierop te filteren.
Voorbeeld:
SELECT * FROM timeslots_1h_occupancy_data_v1
WHERE
calendar_date = “2025-10-10” AND hour_of_day >= 8 AND hour_of_day < 17
retourneert timeslots per uur tussen 8.00 en 17.00 uur
De dagelijkse timeslots hebben geen kolom “hour_of_day”. De metriekwaarden zijn al berekend met inachtneming van de kantooruren (geconfigureerd in Studio). Deze waarden voor kantooruren worden voor historische doeleinden ook geregistreerd in de kolommen “business_day_start_hour” en “business_dat_end_hour”.
Geef location_class op
Spacewell gebruikt een vaste hiërarchie van “locatieklassen”:
BUILDING -> FLOOR -> ROOM -> WORKPLACE
Naast aggregaties op de tijdlijn (15m / 1h / 1d) aggregeert Spacewell ook waarden op FLOOR-niveau.
Het is essentieel om te begrijpen dat deze aggregaties in dezelfde tabel staan. Om duplicatie van waarden te voorkomen, moeten data-analisten rapporten maken op vloerniveau OF op individueel ruimteniveau door te filteren op de kolom “location_class”. In de volgende hoofdstukken wordt uitgelegd hoe dit werkt.
Maak joins met de locatietabel
De timeslottabellen bevatten alleen minimale informatie over de locaties:
- Location_id unieke identificatie van een locatie
- Location_class opsomming (FLOOR / ROOM / WORKPLACE/PARKING)
- Parent_location_id unieke identificatie van een locatie
- Parent_location_class opsomming (BUILDING / FLOOR / ROOM)
Andere locatiegegevens, zoals naam, code/referentie, oppervlakte in m² enzovoort, zijn niet beschikbaar in de timeslottabellen. Ze worden bijgehouden in de locatietabel (“locations_v1”), die alle locaties bevat die momenteel actief zijn, ongeacht of ze door bezettingssensoren worden gemonitord.
Data-engineers moeten voor analysedoeleinden altijd joins maken met de locatietabel.
Er kunnen twee verschillende joins worden gebruikt, afhankelijk van de bedrijfsbehoeften:
- Een INNER JOIN retourneert bezettingsgegevens voor alle huidige, actieve locaties. Dit is het meest voorkomende gebruiksscenario.
- Een LEFT JOIN retourneert alle bezettingsgegevens, ook voor locaties die niet langer actief zijn of waarvan de sensoren zijn verwijderd. In dit geval kan de resultatenset timeslots bevatten waarvan de location_id niet meer in de locatietabel kan worden gevonden.
Actieve versus historische ruimten
De timeslotdataset bevat informatie over ruimten die aan sensoren zijn gekoppeld.
Ruimten die niet aan sensoren zijn gekoppeld, verschijnen niet in de timeslots.
In de praktijk brengen klanten vaak wijzigingen aan in hun sensorinfrastructuur:
- Meer sensoren in ruimten installeren
- Sensoren uit ruimten verwijderen
- Sensoren van de ene ruimte naar een andere verplaatsen
- enz.
Wat gebeurt er dus in de samengestelde timeslots?
| Gebruiksscenario | Effect | Opmerking |
|---|---|---|
| Meer sensoren installeren | Het Spacewell Data Platform genereert meer timeslots voor de betrokken ruimten | |
| Sensoren verwijderen of uitschakelen | Het Spacewell Data Platform genereert niet langer nieuwe timeslots voor de betrokken ruimten | Bestaande timeslots blijven beschikbaar |
| Sensoren van ruimte A naar ruimte B verplaatsen |
Vanaf de verhuisdatum zal het Spacewell Data Platform
|
Bestaande timeslots voor A blijven beschikbaar |
| Actieve sensoren in een opslagdoos plaatsen voor later gebruik | Het Spacewell Data Platform blijft timeslots registreren, ervan uitgaande dat de sensoren nog steeds aan ruimten zijn bevestigd. Er wordt echter geen bezetting geregistreerd. |
Dit klinkt misschien onzinnig, maar het is een praktijksituatie. Om onjuiste bezettingsdatasets te voorkomen, moet u de sensoren loskoppelen van de ruimten (in Studio) |
|
Offline sensoren (geen signaal) |
Het Spacewell Data Platform blijft timeslots registreren voor de gekoppelde ruimten. | Waarden zijn NULL (leeg) |
Als gevolg hiervan vertegenwoordigt de timeslotdataset historische informatie.
Een deel ervan kan nog steeds betrekking hebben op de huidige ruimten, terwijl een ander deel kan verwijzen naar ruimten die niet langer worden gemonitord of die zijn uitgeschakeld/verwijderd, of wat de situatie ook mag zijn.