分析客户数据以识别潜在欺诈
在最后这一组练习中,您将分析日间水疗中心的数据,以识别潜在的欺诈行为。公司为每位客户提供一张个人通行证和一张嘉宾通行证。我们掌握每位客户的签到与签退数据,嘉宾通行证会关联到对应的基础客户 ID。这意味着当客户与嘉宾一同签到时,记录之间可能会存在重叠。我们希望检查某位客户是否至少出现了 3 次重叠记录,因为这将违反我们的业务规则。
思考重叠记录的关键在于对数据进行反透视,并将其视为一串进入与离开的事件流。我们先来完成这一步。
本练习是课程的一部分
SQL Server 中的时间序列分析
练习说明
将开始事件与结束事件拆分开来。
- 在查询的"entrances"部分,将客户的来访开始日期(
dsv.CustomerVisitStart)填入为TimeUTC。 - 在别名为
StartStopPoints的窗口函数处填空,为每位客户按来访开始日期的顺序生成签到事件流。 - 在查询的"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