Analyser les données clients pour détecter d’éventuelles fraudes
Dans cette dernière série d’exercices, nous allons analyser les données d’un day spa afin de repérer d’éventuelles fraudes. Notre entreprise offre à chaque client un pass personnel et un pass invité. Nous disposons des données d’arrivée et de départ pour chaque client et les pass invités sont rattachés à l’ID client principal. Cela signifie qu’il peut y avoir un chevauchement lorsque le client et son invité s’enregistrent en même temps. Nous voulons vérifier s’il existe au moins trois entrées qui se chevauchent pour un même client, car cela enfreindrait notre règle métier.
La clé pour raisonner sur les entrées qui se chevauchent consiste à « dé-pivoter » nos données et à les considérer comme un flux d’entrées et de sorties. Commençons par cela.
Cet exercice fait partie du cours
<cours>Analyse de séries temporelles dans SQL Server</cours>Instructions de l’exercice
Séparez les événements de début et les événements de fin.
- Renseignez la date de début de visite du client (
dsv.CustomerVisitStart) commeTimeUTCdans la partie « entrées » de la requête. - Complétez la fonction de fenêtre que nous appelons
StartStopPointspour obtenir le flux des enregistrements d’arrivée de chaque client, ordonné par leur date de début de visite. - Renseignez la date de fin de visite du client (
dsv.CustomerVisitEnd) commeTimeUTCdans la partie « sorties » de la requête.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
-- This section focuses on entrances: CustomerVisitStart
SELECT
dsv.CustomerID,
dsv.___ AS TimeUTC,
1 AS EntryCount,
-- We want to know each customer's entrance stream
-- Get a unique, ascending row number
___() OVER (
-- Break this out by customer ID
PARTITION BY dsv.___
-- Ordered by the customer visit start date
ORDER BY dsv.___
) AS StartOrdinal
FROM dbo.DaySpaVisit dsv
UNION ALL
-- This section focuses on departures: CustomerVisitEnd
SELECT
dsv.CustomerID,
dsv.___ AS TimeUTC,
-1 AS EntryCount,
NULL AS StartOrdinal
FROM dbo.DaySpaVisit dsv