Stichting-CROW / dashboarddeelmobiliteit-datakwaliteit

Hier documenteren we de datakwaliteit van aanbieders in het Dashboard Deelmobiliteit
5 stars 1 forks source link

Spook-scooters van GO Sharing #32

Open bartwr opened 1 year ago

bartwr commented 1 year ago

In het verleden waren er wel eens 'spookscooters': scooters die op het Dashboard vele dagen stilstonden (rood), maar die in werkelijkheid helemaal niet (meer) in de buitenruimte stonden. Ze stonden wel in het Dashboard, maar niet meer in de feed. In het verleden werd een anders feed gebruikt, de GBFS-feed.

Nu wordt de MDS-feed gebruikt. Het probleem speelt nog steeds: zowel Eindhoven als Den Haag gaf aan dat er soms voertuigen zijn die > 4 dagen stil staan op de kaart, maar die niet daadwerkelijk op de kaart staan.

Doel van dit issue: zoek uit waarom voertuigen van GO Sharing soms op de kaart blijven staan, terwijl de voertuigen niet meer in de feed staan.

bartwr commented 1 year ago

De oorzaak is dat er een voertuig is (voertuig-ID ABC) dat 2x een parkeerperiode actief heeft: 1x recent, en 1 oude. Die oude parkeeractie wordt nooit gesloten.

image

Suggestie voor oplossen hiervan: als een nieuwe parkeeractie start, sluit eventuele oude parkeeracties en log (per e-mail? Telegram?) dat er een glitch is geweest.

bartwr commented 1 year ago

Er zijn momenteel 252 gosharing-voertuigen 2x op de kaart, en 12 voertuigen 3x.

SELECT
    COUNT(*) as num,
  bike_id
 FROM park_events
  WHERE bike_id LIKE 'gosharing:%'
    AND end_time IS NULL
  GROUP BY bike_id
bartwr commented 1 year ago

Dubbele voertuigen kunnen verwijderd worden met een query zoals:

UPDATE
park_events
SET end_time = '2022-07-25T12:00:00'
WHERE end_time is null
AND bike_id IN (
    SELECT bike_id                                                                           
    FROM (SELECT bike_id, COUNT(*), max(park_event_id) as exclude_park_event_id
        FROM park_events 
        WHERE end_time is null group by bike_id) AS q1 WHERE count > 1
)
AND park_event_id NOT IN(
SELECT exclude_park_event_id                                                                           
    FROM (SELECT bike_id, COUNT(*), max(park_event_id) as exclude_park_event_id
        FROM park_events 
        WHERE end_time is null group by bike_id) AS q1 WHERE count > 1
)
AND start_time BETWEEN '2022-07-25' AND '2022-07-26';

Alle voertuigen met dubbele park_events zonder end_time:

SELECT * FROM park_events
WHERE end_time is null
AND bike_id IN (
    SELECT bike_id                                                                           
    FROM (SELECT bike_id, COUNT(*), max(park_event_id) as exclude_park_event_id
        FROM park_events 
        WHERE end_time is null group by bike_id) AS q1 WHERE count > 1
)
AND park_event_id NOT IN(
SELECT exclude_park_event_id                                                                           
    FROM (SELECT bike_id, COUNT(*), max(park_event_id) as exclude_park_event_id
        FROM park_events 
        WHERE end_time is null group by bike_id) AS q1 WHERE count > 1
)
AND start_time BETWEEN '2022-07-25' AND '2022-07-26';

Er waren dubbele park events op de volgende dagen:

2022-04-10 2022-07-25 2022-08-07 2022-08-09 2022-08-10 2022-08-11 2022-08-12 2022-08-13 2022-08-15

Voor al deze dagen heb ik de dubbelingen verwijderd.

bartwr commented 1 year ago

We hebben het idee dat het kan voorkomen dat 'einde park events' niet goed verwerkt zijn geweest in periode's dat er een zware export werd gedaan.

bartwr commented 1 year ago

Heb opnieuw een cleanup gedaan.

Er waren 24 voertuigen met dubbele park events, voor data:

De dubbele park events zijn nu opgeschoond.