संभावित धोखाधड़ी के लिए क्लाइंट डेटा का विश्लेषण करें
इन अंतिम अभ्यासों में, हम संभावित धोखाधड़ी की जाँच के लिए डे स्पा डेटा का विश्लेषण करेंगे। हमारी कंपनी प्रत्येक ग्राहक को व्यक्तिगत उपयोग के लिए एक पास और एक सिंगल गेस्ट पास देती है। हमारे पास हर क्लाइंट के चेक-इन और चेक-आउट का डेटा है और गेस्ट पास मूल ग्राहक ID से जुड़े होते हैं। इसका मतलब है कि जब कोई क्लाइंट और उसका गेस्ट साथ में चेक-इन करते हैं, तो ओवरलैप हो सकता है। हम यह देखना चाहते हैं कि क्या किसी एक क्लाइंट के लिए कम से कम तीन ओवरलैपिंग एंट्रीज़ हैं, क्योंकि यह हमारे बिज़नेस रूल का उल्लंघन होगा।
ओवरलैपिंग एंट्रीज़ के बारे में सोचने की कुंजी है हमारे डेटा को अनपिवट करना और एंट्री तथा एग्ज़िट की स्ट्रीम के रूप में देखना। हम पहले वही करेंगे।
यह अभ्यास पाठ्यक्रम का हिस्सा है
SQL Server में Time Series Analysis
अभ्यास निर्देश
स्टार्ट इवेंट्स और एंड इवेंट्स अलग करें।
- क्वेरी के "entrances" हिस्से में ग्राहक की विज़िट के स्टार्ट डेट (
dsv.CustomerVisitStart) कोTimeUTCके रूप में भरें। - विंडो फंक्शन भरें जिसे हम
StartStopPointsनाम (alias) देते हैं, ताकि हर ग्राहक के लिए उनके विज़िट स्टार्ट डेट के क्रम में चेक-इन्स की स्ट्रीम मिल सके। - क्वेरी के "departures" हिस्से में ग्राहक की विज़िट के एंड डेट (
dsv.CustomerVisitEnd) कोTimeUTCके रूप में भरें।
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
-- 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