FocusBI: SSIS 开发案例(原创)

关注微信公众号:FocusBI 查看更多文章;加QQ群:808774277 获取学习资料和一起探讨问题。
《商业智能教程》pdf下载地址
链接:https://pan.baidu.com/s/1f9VdZUXztwylkOdFLbcmWw 密码:2r4v
这张照片确实很帅,我承认我不是因为这张照片而入行BI的,而是没有别的选择了才入行BI的。
大家不要看他拖动图表那么爽、那么自然,你可不知道背后的数据团队要付出多少心血才能让他做分析报表那么轻松自然。在商业智能项目实施的过程中数据清洗整理占用了整个项目的百分七十的时间,如果一个项目预计四个月完成,那至少有三个月是在做数据清洗整理的事情,这还不考虑数据质量很差的情况,如果乙方在入场甲方之前没有去了解甲方的数据质量情况,这可能是个无底洞乙方将被迫为甲方填不必要填的坑,而且这些坑是乙方无法主导填的,最后会导致项目尸骨无存、露宿街头本来三四个月搞定的项目最后做一年,项目成本成倍的增长导致项目亏损;多么疼的领悟。
数据清洗是脏活累活,也在老板面前体现不出价值。这导致一些BI厂商推出不要依赖IT让业务人员自己使用工具做分析的自助式BI概念,这概念有点瞎扯最后还是得IT提供SQL语句、噗。
在《使用Python爬虫为BI准备数据源》这篇博客中讲到使用爬虫爬取网页数据补充数据来源种类,这里我没有使用一亩田数据,使用爬虫爬取的租房数据、点评数据、外卖数据、小区数据做一个简单的ETL过程,在爬虫阶段我已经考虑到数据清洗和数据结构问题,所以这些数据进入数据库后通过简单的处理就行了;另外这些数据涉及到地址经纬度也是使用爬虫自动化完成,后面也会讲方法。
这些数据仅用于个人使用而非商业用途。
租房数据
数据需求
来源于某个房产网站,爬取广州市:黄埔、萝岗、增城、荔湾、白云、番禺、广州周边、
南沙、从化、越秀、天河、海珠、花都 13个区域的租房数据;抓取的内容分别是:情况简写、具体位置、位置区域、位置道路、房东、月租;需要转换的有:经度、维度。租房数据表和经纬度表一共26个需要把这26个表通过SSIS数据清洗合并成一个表。
内容如下:



合并数据
一共26个表合并成一个表,这里采用硬编码的方式处理在表列表中可以看到城市表

这个表一共13条记录用来构造表名,合并数据的方法采用游标遍历每一个的数据并保存到同一个表中。这种硬编码的方式不推荐大家使用,这里完全可以采用系统来获取某类型表名在使用游标循环动态遍历;为了方便大家理解采用硬编码的方式来构造表名。
SQl存储过程
USE [51ZXW_案例库_ODS]
GO
/****** Object: StoredProcedure [dbo].[ZF_DataAll] Script Date: 2018/8/16 16:17:56 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: FocusBI
-- Create date: 20180816
-- Description: 汇总租房数据
-- =============================================
CREATE PROCEDURE [dbo].[ZF_DataAll]
AS
BEGIN truncate table [dbo].[ODS_ZF_gz_DataAll] declare ZF_DataTable Cursor scroll for
select distinct
case when 城市名称 = '广州周边' then '[51ZXW_案例库_YW].dbo.ZF_广州周边$'
else '[51ZXW_案例库_YW].dbo.ZF_' + 城市名称 + '区$' end as ZF_Table,
case when 城市名称 = '广州周边' then '[51ZXW_案例库_YW].dbo.ZF_广州周边_JW$'
else '[51ZXW_案例库_YW].dbo.ZF_' + 城市名称 + '区_JW$' end as ZF_Table_JW
from [51ZXW_案例库_YW].[dbo].[ZF_城市$] open ZF_DataTable
Declare @ZF_Table nvarchar(50)
Declare @ZF_Table_JW nvarchar(50)
fetch next from ZF_DataTable into @ZF_Table,@ZF_Table_JW
while(@@fetch_status=0)
begin declare @sql0 nvarchar(200)
set @sql0 = 'update ' + @ZF_Table + ' set [月租] = 0 from ' + @ZF_Table + ' where [月租] = ''NULL'' '
exec(@sql0) declare @sql1 nvarchar(2000)
set @sql1 = '
insert into [dbo].[ODS_ZF_gz_DataAll](ZFID, 情况简写, 具体位置, 位置区域, 位置道路, 房东, 月租, 纬度, 经度)
select
a.ZFID,
cast(情况简写 as nvarchar(100)) as 情况简写,
cast(a.具体位置 as nvarchar(150)) as 具体位置,
cast(位置区域 as nvarchar(150)) as 位置区域,
cast(位置道路 as nvarchar(150)) as 位置道路,
cast(房东 as nvarchar(20)) as 房东,
cast(月租 as nvarchar(20)) as 月租,
latb as 纬度,
lngb as 经度
from ' + @ZF_Table + ' as a
left join ' + @ZF_Table_JW + ' as b on a.ZFID = b.ZFID
' exec(@sql1) fetch next from ZF_DataTable into @ZF_Table,@ZF_Table_JW
end close ZF_DataTable
deallocate ZF_DataTable END
SSIS方案
1.创建项目

2.配置数据源
右击连接管理器,看到窗口选择需要创建的数据源类型。这里选择连接SQL Server的连接管理器类型 OLE DB 或 ADO.NET。选择OLE DB 后再选择新建,输入服务器、用户名、密码,选择测试连接 ,确定后修改 连接管理名称。这里要建立两个连接管理器 ,一个是源一个是目标。




3.新建包
右击SSIS包,选择新建SSIS包,右击package1选择重命名输入ODS_ZF_DataAll。
4.选择控制流
从右侧的SSIS工具箱拖入两个 Execute SQL Task控件。用箭头连接起来

5.处理数据流
双击第一个Execute SQL Task 控件,选择Connection选项的下拉框 选择目标数据源,单击SQLStatement输入SQL语句,修改Name,单击OK;第二个Execute SQL Task都差不多。完成后 右击 包 选择执行包。




6.项目部署
右击方案名称,选择部署,单击下一步,输入服务器地址选择路劲 开始部署。





7.执行计划
进入SQL Server Management Studio 选择SQL Server 代理,新建作业、新建作业步骤、填充各个参数、配置计划。




8.邮件监控
配置邮件监控需要一台邮件服务器配置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准备数据源(原创)
FocusBI关注者
FocusBI:SSAS体系结构(原创)
FocusBI:租房分析&星型模型
FocusBI:地产分析&雪花模型
FocusBI:MDX检索多维模型
FocusBI:租房分析可视化(网址体验)
FocusBI: 《DW/BI项目管理》之数据库表结构 (原创)
FocusBI: SSIS 开发案例(原创)的更多相关文章
- FocusBI: SSIS体系结构(原创)
关注微信公众号:FocusBI 查看更多文章:加QQ群:808774277 获取学习资料和一起探讨问题. <商业智能教程>pdf下载地址 链接:https://pan.baidu.com/ ...
- 使用Jquery+EasyUI 进行框架项目开发案例讲解之五 模块(菜单)管理源码分享
http://www.cnblogs.com/huyong/p/3454012.html 使用Jquery+EasyUI 进行框架项目开发案例讲解之五 模块(菜单)管理源码分享 在上四篇文章 ...
- 使用Jquery+EasyUI 进行框架项目开发案例讲解之四 组织机构管理源码分享
http://www.cnblogs.com/huyong/p/3404647.html 在上三篇文章 <使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享> ...
- 使用Jquery+EasyUI 进行框架项目开发案例讲解之三---角色管理源码分享
使用Jquery+EasyUI 进行框架项目开发案例讲解之三 角色管理源码分享 在上两篇文章 <使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享> ...
- 使用Jquery+EasyUI 进行框架项目开发案例讲解之二---用户管理源码分享
使用Jquery+EasyUI 进行框架项目开发案例讲解之二 用户管理源码分享 在上一篇文章<使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享>我们分享 ...
- 【推荐】使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享
使用Jquery+EasyUI 进行框架项目开发案例讲解之一 员工管理源码分享 在开始讲解之前,我们先来看一下什么是Jquery EasyUI?jQuery EasyUI是一组基于jQuery的U ...
- 使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享
使用Jquery+EasyUI 进行框架项目开发案例解说之中的一个 员工管理源代码分享 在開始解说之前,我们先来看一下什么是Jquery EasyUI?jQuery EasyUI是一组基于jQuery ...
- cocos2d-x游戏开发实战原创视频讲座系列1之2048游戏开发
cocos2d-x游戏开发实战原创视频讲座系列1之2048游戏开发 的产生 视持续更新中.... 视频存放地址例如以下:http://ipd.pps.tv/user/1058663622 ...
- 百度UEditor开发案例(JSP)
本案例的开发环境:MyEclipse+tomcat+jdk 本案例的开发内容: 用百度编辑器发布新闻(UEditor的初始化开发部署) 编辑已发过的新闻(UEditor的应用——编辑旧文章) ...
随机推荐
- bootstrap-table简单使用
开发项目时总想着能不能有一款插件包含分页,查询等常用功能,后来发现了bootstrap-table 直接看代码和效果图 <!DOCTYPE html> <html lang=&quo ...
- ES6学习之const声明常量的学习
在ES中const关键字用来声明常量,const声明的一经定义不能修改 和let特性差不多, ; console.log(a); a = ; //报错 const定义完常量后必须赋值,后面不允许再次赋 ...
- dubbo事件通知机制(1)
此文已由作者岳猛授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. dubbo事件通知机制:http://dubbo.io/books/dubbo-user-book/demos ...
- DS作业01--日期抽象数据类型设计与实现
第六次作业 1.思维导图及学习体会 1.1 思维导图 1.2 学习体会 因为假期里面代码的练习量很小,所以开学来上学期的知识遗忘了很多,刚刚开始写大作业的时候很困难,完全没有思路,后来看了几位同学的代 ...
- JavaWeb -cookie&session&application
cookie&session&application总结 Cookie[key-value](不是内置对象必须new): 1. Cookie 是由服务端生成的,在发送给客户端保存 2. ...
- java使用Redis1--安装与简单使用
环境: CentOS6.4,Redis3.0.3 一.Redis安装(需要安装gcc) 官网http://download.redis.io/releases/redis-3.0.3.tar.gz上下 ...
- 快速搭建微信小程序开发环境
1.工具软件: 注:本文介绍的工具软件已分享到百度云盘,直接下载并按照本文介绍安装即可. 开发工具 v0.7 百度云链接: https://pan.baidu.com/s/1jIQ7i8A密码: aq ...
- django model改变后,同步数据库
在使用django进行开发时,往往需要根据不同的需求对model进行更改.而这时候,python manage.py syncdb就不好使了. 目前有个很好的工具,是south,这个是专门用来更改mo ...
- Dota2APP--第一天
从今天开始,下定决心自己独立开发一个有关于Dota2的APP,因为非常喜欢这个游戏恰好自己又是做iOS移动开发的所以萌生了这个想法.希望可以坚持下去,有喜欢dota2的朋友也可以提点建议. 一.项目的 ...
- C++基础知识-派生类、调用顺序、访问等级、函数遮蔽
一.派生类的概念 类之间有一种层次关系,有父亲类,有孩子类. 车这个类,当成父类(也叫基类.超类),派生出卡车.轿车,他们属于孩子类(子类.派生类) 继承:有父亲类,有孩子类,构成了层次关系.继承这种 ...