关注微信公众号:FocusBI 查看更多文章;加QQ群:808774277 获取学习资料和一块儿探讨问题。html
《商业智能教程》pdf下载地址 python
连接:https://pan.baidu.com/s/1f9VdZUXztwylkOdFLbcmWw 密码:2r4vsql
这张照片确实很帅,我认可我不是由于这张照片而入行BI的,而是没有别的选择了才入行BI的。数据库
你们不要看他拖动图表那么爽、那么天然,你可不知道背后的数据团队要付出多少心血才能让他作分析报表那么轻松天然。在商业智能项目实施的过程当中数据清洗整理占用了整个项目的百分七十的时间,若是一个项目预计四个月完成,那至少有三个月是在作数据清洗整理的事情,这还不考虑数据质量不好的状况,若是乙方在入场甲方以前没有去了解甲方的数据质量状况,这多是个无底洞乙方将被迫为甲方填没必要要填的坑,并且这些坑是乙方没法主导填的,最后会致使项目尸骨无存、露宿街头原本三四个月搞定的项目最后作一年,项目成本成倍的增加致使项目亏损;多么疼的领悟。服务器
数据清洗是脏活累活,也在老板面前体现不出价值。这致使一些BI厂商推出不要依赖IT让业务人员本身使用工具作分析的自助式BI概念,这概念有点瞎扯最后仍是得IT提供SQL语句、噗。微信
在《使用Python爬虫为BI准备数据源》这篇博客中讲到使用爬虫爬取网页数据补充数据来源种类,这里我没有使用一亩田数据,使用爬虫爬取的租房数据、点评数据、外卖数据、小区数据作一个简单的ETL过程,在爬虫阶段我已经考虑到数据清洗和数据结构问题,因此这些数据进入数据库后经过简单的处理就好了;另外这些数据涉及到地址经纬度也是使用爬虫自动化完成,后面也会讲方法。数据结构
这些数据仅用于我的使用而非商业用途。工具
来源于某个房产网站,爬取广州市:黄埔、萝岗、增城、荔湾、白云、番禺、广州周边、post
南沙、从化、越秀、天河、海珠、花都 13个区域的租房数据;抓取的内容分别是:状况简写、具体位置、位置区域、位置道路、房东、月租;须要转换的有:经度、维度。租房数据表和经纬度表一共26个须要把这26个表经过SSIS数据清洗合并成一个表。学习
内容以下:
一共26个表合并成一个表,这里采用硬编码的方式处理在表列表中能够看到城市表
这个表一共13条记录用来构造表名,合并数据的方法采用游标遍历每个的数据并保存到同一个表中。这种硬编码的方式不推荐你们使用,这里彻底能够采用系统来获取某类型表名在使用游标循环动态遍历;为了方便你们理解采用硬编码的方式来构造表名。
1 USE [51ZXW_案例库_ODS] 2 GO 3 /****** Object: StoredProcedure [dbo].[ZF_DataAll] Script Date: 2018/8/16 16:17:56 ******/ 4 SET ANSI_NULLS ON 5 GO 6 SET QUOTED_IDENTIFIER ON 7 GO 8 -- ============================================= 9 -- Author: FocusBI 10 -- Create date: 20180816 11 -- Description: 汇总租房数据 12 -- ============================================= 13 CREATE PROCEDURE [dbo].[ZF_DataAll] 14 AS 15 BEGIN 16 17 truncate table [dbo].[ODS_ZF_gz_DataAll] 18 19 declare ZF_DataTable Cursor scroll for 20 select distinct 21 case when 城市名称 = '广州周边' then '[51ZXW_案例库_YW].dbo.ZF_广州周边$' 22 else '[51ZXW_案例库_YW].dbo.ZF_' + 城市名称 + '区$' end as ZF_Table, 23 case when 城市名称 = '广州周边' then '[51ZXW_案例库_YW].dbo.ZF_广州周边_JW$' 24 else '[51ZXW_案例库_YW].dbo.ZF_' + 城市名称 + '区_JW$' end as ZF_Table_JW 25 from [51ZXW_案例库_YW].[dbo].[ZF_城市$] 26 27 open ZF_DataTable 28 Declare @ZF_Table nvarchar(50) 29 Declare @ZF_Table_JW nvarchar(50) 30 fetch next from ZF_DataTable into @ZF_Table,@ZF_Table_JW 31 while(@@fetch_status=0) 32 begin 33 34 declare @sql0 nvarchar(200) 35 set @sql0 = 'update ' + @ZF_Table + ' set [月租] = 0 from ' + @ZF_Table + ' where [月租] = ''NULL'' ' 36 exec(@sql0) 37 38 39 declare @sql1 nvarchar(2000) 40 set @sql1 = ' 41 insert into [dbo].[ODS_ZF_gz_DataAll](ZFID, 状况简写, 具体位置, 位置区域, 位置道路, 房东, 月租, 纬度, 经度) 42 select 43 a.ZFID, 44 cast(状况简写 as nvarchar(100)) as 状况简写, 45 cast(a.具体位置 as nvarchar(150)) as 具体位置, 46 cast(位置区域 as nvarchar(150)) as 位置区域, 47 cast(位置道路 as nvarchar(150)) as 位置道路, 48 cast(房东 as nvarchar(20)) as 房东, 49 cast(月租 as nvarchar(20)) as 月租, 50 latb as 纬度, 51 lngb as 经度 52 from ' + @ZF_Table + ' as a 53 left join ' + @ZF_Table_JW + ' as b on a.ZFID = b.ZFID 54 ' 55 56 exec(@sql1) 57 58 fetch next from ZF_DataTable into @ZF_Table,@ZF_Table_JW 59 end 60 61 close ZF_DataTable 62 deallocate ZF_DataTable 63 64 END
右击链接管理器,看到窗口选择须要建立的数据源类型。这里选择链接SQL Server的链接管理器类型 OLE DB 或 ADO.NET。选择OLE DB 后再选择新建,输入服务器、用户名、密码,选择测试链接 ,肯定后修改 链接管理名称。这里要创建两个链接管理器 ,一个是源一个是目标。
右击SSIS包,选择新建SSIS包,右击package1选择重命名输入ODS_ZF_DataAll。
从右侧的SSIS工具箱拖入两个 Execute SQL Task控件。用箭头链接起来
双击第一个Execute SQL Task 控件,选择Connection选项的下拉框 选择目标数据源,单击SQLStatement输入SQL语句,修改Name,单击OK;第二个Execute SQL Task都差很少。完成后 右击 包 选择执行包。
右击方案名称,选择部署,单击下一步,输入服务器地址选择路劲 开始部署。
进入SQL Server Management Studio 选择SQL Server 代理,新建做业、新建做业步骤、填充各个参数、配置计划。
配置邮件监控须要一台邮件服务器配置SMTP,推荐你们使用126邮箱注册SMTP。
点评数据跟租房数据处理方式同样,这里就不在重复讲解;点评数据一样也包含26个表,字段分别是店名、星级、人均、大类、分类、城市、县市、区域、地址、点评量、ID、经度、纬度
外卖数据字段包含:DT_ID、DM_ID、店名、等级、月销售、起送费、配送费、送到时间、DM_addr、DM_Latb、DM_Lngb、区域、地铁站、DT_Latb、DT_Lngn
小区数据字段包含:XQID、城市、县市、区域、小区名称、建成年份、路况、单价、纬度、经度
不论是租房、点评、外卖、小区数据都少不了地址的出现,若是想在地图上展示他们那必需要拿到这个地址的经度和纬度,这个经纬度的转换一些地图厂商已经给了接口,只须要获取接口传入地址参数就能自动的返回经度和纬度,这里我提供一种方法:这个是百度提供的接口,使用python调用百度接口,这里得先注册认证为百度开发者通常审核时间是一个星期会以邮件通知你是否审核成功,你将获取到一个开发者的Key,这个Key的权限是一天只能转换6000个地址。
历史文章:
FocusBI: 使用Python爬虫为BI准备数据源(原创)