SQL Server BI数据仓库应用——公共自行车借还数据多维分析

一篇几年前数据仓库与商务智能的课程大作业,主要涵盖使用SQL Server BI进行数据仓库的设计和装载、多维分析。

另一作者:Katherine

分析工具:SQL Server BI 2008、Excel

关于数据仓库的理论和SQL Server BI 的使用推荐慕课网 西南财经大学李瑾坤副教授的商务智能。

原始数据:数据为浙江省温州市鹿城区2011年11月1日到20日公共自行车借还数据记录表,包括字段如下:

字段  示例数据
No. 1
车号 WZB000036
车号SN 36
借出车站 区政府西
借出车站号 17
借车锁桩号 1
借车时刻 2012/11/1 5:59:38
归还车站 县前头
还车车站号 64
还车锁桩号 20
还车时刻 2012/11/1 6:03:42
用车时间 4
用车方式  会员卡借车
卡类型  普通会员卡
借车卡SN 324408

SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第1张图片

1. 分析目标

    (1)每个站点在不同时间段的借出次数、还入次数;

    (2)每个时间段人们的用车频率,以小时、时段、天、月为单位;

    (3)每辆车在一定时间段内的累计使用时长及总使用时长;

    (4)每个桩在一定时间段内的累计使用频次及总使用次数;

    (5)每个客户的用车偏好性:平均用车时间、高频用车时间点等。

2. 多维分析模型设计

设置度量值为用车时间、借车次数和还车次数,其中用车时间直接使用原始数据集中的“用车时间”属性,单位是分钟;借车次数、还车次数应用多维分析模型“事实表计数”功能实现。

维度包括站点、借车时间、还车时间、借车卡、自行车这5个维度。

维度  维度层次
站点 站点编号、车桩编号
借车时间 借车时刻、借车小时、借车时段、借车日期、借车月份
换车时间 还车时刻、还车小时、还车时段、还车日期、还车月份
借车卡 卡类型、卡号
自行车 自行车编号

注:借车时段及还车时段的划分如下:6~9时为上午,10~14时为中午,1~20时为下午,其余为夜晚。

3. 数据仓库设计

数据仓库包括一个事实表、四个维度表。

事实表:

SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第2张图片

记录编号仅作主键,不参与多维分析;自行车编号、车桩编号、借车卡号分别对应自行车、车桩、借车卡维度表;用车时间为一个度量值。

各维度表:

SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第3张图片SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第4张图片

车桩号指的是某个站点的第几个车桩,如15表示第15号车桩;车桩编号的构成是“站点编号+车桩号”,如“100第10号”表示第100号站点第10号车桩;站点编号对应站点维度表。

SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第5张图片SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第6张图片

表关系图:

SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第7张图片

4. 数据装载

建立名称为LoadBicycleDM的Integration Service项目,新建两个连接管理器,Localhost.Bicycle和Localhost.BicycleDM,分别对应OLEDB源和OLE DB目标。在控制流面板中插入数据流任务如下:

SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第8张图片

装载借车卡表:

SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第9张图片

图片太小看不清,OLE DB源中的数据访问模式为SQL命令:select distinct(借车卡SN),卡类型 from [Bicycle].[dbo].[Bicycle] order by 借车卡SN

装载自行车表:

SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第10张图片


SQL命令:select distinct(车号SN),车号 from [Bicycle].[dbo].[Bicycle] order by 车号SN

装载站点表:

SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第11张图片

SQL命令:select 借出车站号,借出车站,COUNT(distinct([借车锁桩号])) as 车桩数 from [Bicycle].[dbo].[Bicycle] group by 借出车站号,借出车站

装载车桩表:

SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第12张图片

OLE DB源:SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第13张图片

OLE DB源1:SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第14张图片

排序:

排序1:

合并:

派生列:

聚合:

派生列1:
数据转换:

装载事实表:

SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第15张图片

OLE DB源:SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第16张图片

派生列:

数据转换:

运行数据装载

SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第17张图片

5. 多维分析

建立名称为BicycleAS的Analysis Service项目,新建数据源为已建好的数据仓库,名称为BicycleDM.ds。

根据数据源建立数据源视图,名称为Bicycle.dsv,并做如下修改:

(1)将记录编号的逻辑主键删除,设置借车卡号、自行车编号、车桩编号、借车时刻、还车时刻为逻辑主键;

(2)在事实表中新建命名计算:借车小时、还车小时、借车时段、还车时段、借车日期、还车日期、借车月份、还车月份。代码如下:

借车小时:

convert(int,ltrim(substring(借车时刻,(charindex(':',借车时刻,5)-2),2)))
还车小时:


convert(int,ltrim(substring(还车时刻,(charindex(':',还车时刻,5)-2),2)))
借车日期:
substring(借车时刻,6,(charindex('/',借车时刻,6)-6)) + '.' + right('0'+ rtrim(substring(借车时刻,(charindex('/',借车时刻,6)+1),2)),2)
还车日期:
substring(还车时刻,6,(charindex('/',还车时刻,6)-6)) + '.' + right('0'+ rtrim(substring(还车时刻,(charindex('/',还车时刻,6)+1),2)),2)
借车时段:
case
when convert(int,ltrim(substring(借车时刻,(charindex(':',借车时刻,5)-2),2))) between 0 and 5 then '夜晚'
when convert(int,ltrim(substring(借车时刻,(charindex(':',借车时刻,5)-2),2))) between 6 and 9 then '上午'
when convert(int,ltrim(substring(借车时刻,(charindex(':',借车时刻,5)-2),2))) between 10 and 14 then '中午'
when convert(int,ltrim(substring(借车时刻,(charindex(':',借车时刻,5)-2),2))) between 15 and 20 then '下午'
when convert(int,ltrim(substring(借车时刻,(charindex(':',借车时刻,5)-2),2))) between 21 and 23 then '夜晚'
else '无'
end

还车时段:

case
when convert(int,ltrim(substring(还车时刻,(charindex(':',还车时刻,5)-2),2))) between 0 and 5 then '夜晚'
when convert(int,ltrim(substring(还车时刻,(charindex(':',还车时刻,5)-2),2))) between 6 and 9 then '上午'
when convert(int,ltrim(substring(还车时刻,(charindex(':',还车时刻,5)-2),2))) between 10 and 14 then '中午'
when convert(int,ltrim(substring(还车时刻,(charindex(':',还车时刻,5)-2),2))) between 15 and 20 then '下午'
when convert(int,ltrim(substring(还车时刻,(charindex(':',还车时刻,5)-2),2))) between 21 and 23 then '夜晚'
else '无'
end
借车月份:
substring(借车时刻,6,(charindex('/',借车时刻,6)-6)) + '月'
还车月份:
substring(还车时刻,6,(charindex('/',还车时刻,6)-6)) + '月'

构建多维数据源视图:

SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第18张图片

使用现有表建立多维数据集,名称为BicycleDM.cube。度量值表选为事实表,度量值选择用车时间和事实表计数,现有维度选择自行车、车桩、借车卡。预览图如下:

SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第19张图片

使用现有表新建借车时间维度、还车时间维度。以建立借车时间维度为例,主表选择事实表,键列选择借车时刻,不选择任何相关表,可用属性勾选借车时刻、借车小时、借车时段、借车日期、借车月份,维度名称设置为借车时间。还车时间使用相同方法建立,两者的预览图如下:

SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第20张图片  SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第21张图片

各维度属性通用设置如下:

AttributeHierarchyVisible

True

OrderBy

Name

站点编号NameColumn

站点名称

自行车编号NameColumn

车牌号

其余属性NameColumn

属性自身

属性之间关系类型

刚性

借车时间维度的层次结构和属性关系如下:

SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第22张图片  SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第23张图片

还车时间维度的层次结构和属性关系:

SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第24张图片  SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第25张图片

借车卡维度的层次结构和属性关系:

SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第26张图片  SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第27张图片

车桩维度的层次结构和属性关系:

SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第28张图片  SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第29张图片

自行车维度没有特殊设置。

6. Excel 数据呈现

处理多维分析模型

SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第30张图片

在SQL Server中连接Analysis Service,使用Localhost服务器,在数据库目录下发现存在名为BicycleAS的数据库(如下图),证明操作成功。


打开EXCEL2016,导入来自Analysis Service的数据,使用Localhost服务器,选择BicycleAS数据库,数据显示方式选择数据透视表。

7. 结论

在11月1日到11月20日,各站点用车次数的数据透视图和频数分布图如下:

SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第31张图片

SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第32张图片

从图中可以看出,“五马美食林”“国光大厦”等6个站点用车次数遥遥领先,均在8000以上;“市二医院”“数码广场”等55个站点用车次数在4000到8000之间,处于中等水平;“新城车站”“科技馆”等119个站点用车次数在4000以下。假定在这20天中用车次数在8000以上的为高频站点,4000到6000之间的为中频站点,4000以下的为低频站点,结合温州市鹿城区公共自行车站点分布图,可的得到如下高中低频站点分布图:

SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第33张图片

管理部门可根据各站点的分布和用车频次的相对大小,合理分配资源,提高公共自行车网络运行效率,如按实际情况增减站点的车桩个数,高频站点配备较多的车桩,低频站点配备较少的车桩。

下图为各小时借车频次分布图:

SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第34张图片

从图中可以看出,按小时分布的借车频次存在两个峰值,分别位于上午8-9时和下午17-18时,与人们上下班时间相符,交通部门可据此在这两个时段内合理指挥交通,尽量避免自行车和机动车的行驶冲突。此外,晚上21时到次日6时借车次数接近于0,管理部门可利用这个时间段对公共自行车进行检查、维修、更换、调度等工作。

从11月1日到11月20日,各量自行车用车时间统计图如下:

SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第35张图片

从图中可以看出,大部分自行车的累计使用时间在1000到3000分钟之间。高于3000分钟的车辆因为使用时间长,可能面临提前报废的风险,而低于1000分钟的车辆可能是由于自身出现问题,导致骑行功能降低甚至无法骑行。管理部门可以据此识别出这些车辆,并只对这些车辆进行检测和维修,从而有效降低运营成本。

SQL Server BI数据仓库应用——公共自行车借还数据多维分析_第36张图片

计算每一趟单车出行的使用时长,统计得出的用车时长频数分布如上图所示。从图中可以看出,大部分单车出行的时长在10分钟到30分钟这个区间内,有少数人骑行超过2小时。共享单车行业主打绿色低碳,在提供设施的同时,配套地推出鼓励使用单车出行的优惠政策,有利于企业提升软实力。根据用车时长,企业经营者可以合理定价,鼓励人们更多地使用单车出行,比如:对于骑行超过1小时的用户,可以减免一定的使用费用,从而达到鼓励人们使用自行车,推广单车共享行业的目的。



你可能感兴趣的:(案例实战)