FocusBI: SSIS 開發案例(原創)

  

  關注微信公衆號: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條記錄用來構造表名,合併數據的方法採用遊標遍歷每個的數據並保存到同一個表中。這種硬編碼的方式不推薦你們使用,這裏徹底能夠採用系統來獲取某類型表名在使用遊標循環動態遍歷;爲了方便你們理解採用硬編碼的方式來構造表名。

  SQl存儲過程

 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

 

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: SQL Server內核

FocusBI: 總線矩陣(原創)

FocusBI: 數據倉庫 (原創)

FocusBI: 商業智能場景(原創)

FocusBI: SSIS體系結構(原創)

FocusBI: 使用Python爬蟲爲BI準備數據源(原創)

FocusBI: SSIS 開發案例(原創) 

FocusBI關注者
FocusBI:SSAS體系結構(原創)
FocusBI:租房分析&星型模型
FocusBI:地產分析&雪花模型
FocusBI:MDX檢索多維模型
FocusBI:租房分析可視化(網址體驗)

FocusBI: 《DW/BI項目管理》之數據庫表結構 (原創)

FocusBI:《DW/BI項目管理》之SSIS執行狀況

相關文章
相關標籤/搜索