在進行etl資料抽取的時候,往往會對資料進行條件拆分,比如當[工資]》5000時,才進入資料倉儲,否則輸出到excel。類似這種需求。今天就來講解一下條件拆分控制項的使用。達到的目的就是把[orderstatuscode]等於99的輸出到資料倉儲,不等於99的輸出到excel中。
第一步:準備原始資料,建立表以及在表中新增資料,指令碼如下:
create table [dbo].[memberorderstatus](第二步:建立乙個excel檔案,用於存放[orderstatuscode]不等於99的資料。[orderstatuscode] [varchar](
2) null,
[orderstatusname] [nvarchar](
20) null,
[status] [varchar](
1) null
) on [primary]
insert into [memberorderstatus]([orderstatuscode],[orderstatusname],[status]) values(n'01
',n'
未提交',n'a'
)insert into [memberorderstatus]([orderstatuscode],[orderstatusname],[status]) values(n'02
',n'
已提交',n'a'
)insert into [memberorderstatus]([orderstatuscode],[orderstatusname],[status]) values(n'03
',n'
已審核',n'a'
)insert into [memberorderstatus]([orderstatuscode],[orderstatusname],[status]) values(n'04
',n'
分揀完成
',n'a'
)insert into [memberorderstatus]([orderstatuscode],[orderstatusname],[status]) values(n'05
',n'
配送中',n'a'
)insert into [memberorderstatus]([orderstatuscode],[orderstatusname],[status]) values(n'06
',n'
簽收',n'a'
)insert into [memberorderstatus]([orderstatuscode],[orderstatusname],[status]) values(n'07
',n'
退貨中',n'a'
)insert into [memberorderstatus]([orderstatuscode],[orderstatusname],[status]) values(n'08
',n'
退貨入庫
',n'a'
)insert into [memberorderstatus]([orderstatuscode],[orderstatusname],[status]) values(n'09
',n'
配送異常
',n'a'
)insert into [memberorderstatus]([orderstatuscode],[orderstatusname],[status]) values(n'10
',n'
缺貨',n'a'
)insert into [memberorderstatus]([orderstatuscode],[orderstatusname],[status]) values(n'11
',n'
訂單掛起
',n'a'
)insert into [memberorderstatus]([orderstatuscode],[orderstatusname],[status]) values(n'12
',n'
已排程',n'a'
)insert into [memberorderstatus]([orderstatuscode],[orderstatusname],[status]) values(n'13
',n'
已生成分揀計畫
',n'a'
)insert into [memberorderstatus]([orderstatuscode],[orderstatusname],[status]) values(n'14
',n'
已列印',n'a'
)insert into [memberorderstatus]([orderstatuscode],[orderstatusname],[status]) values(n'15
',n'
已生成出庫單
',n'a'
)insert into [memberorderstatus]([orderstatuscode],[orderstatusname],[status]) values(n'16
',n'
已出庫',n'a'
)insert into [memberorderstatus]([orderstatuscode],[orderstatusname],[status]) values(n'17
',n'
已複核',n'a'
)insert into [memberorderstatus]([orderstatuscode],[orderstatusname],[status]) values(n'18
',n'
自退貨中
',n'a'
)insert into [memberorderstatus]([orderstatuscode],[orderstatusname],[status]) values(n'19
',n'
自退貨入庫
',n'a'
)insert into [memberorderstatus]([orderstatuscode],[orderstatusname],[status]) values(n'20
',n'
退貨已入庫
',n'a'
)insert into [memberorderstatus]([orderstatuscode],[orderstatusname],[status]) values(n'21
',n'
已鎖定',n'a'
)insert into [memberorderstatus]([orderstatuscode],[orderstatusname],[status]) values(n'99
',n'
取消',n'
a')
第三步:開啟vs,新建乙個ssis專案。
第四步:在控制流檢視中,拖入乙個資料流任務,然後雙擊這個資料流任務,進入資料流任務,在介面中拖入乙個ole db源,雙擊這個控制項進行資料來源的設定,如圖所示:
第五步:拖入乙個條件拆分控制項,雙擊進行設定,這步是關鍵,需要把[orderstatuscode]等於99的資料找出來,匯入到資料倉儲中,不等於99的資料匯入到excel中。實現的關鍵就是對函式的使用,大家如果對其中的函式不熟悉,可以msdn官網學習。 如圖所示:
第六步:這時的資料有兩個走向,乙個是匯入資料倉儲,第二個是匯入到excel,所以需要拖入兩個目標控制項。當然在匯入前有必要進行資料轉換,資料來源和目標的字段型別要匹配。如圖所示:
第七步:大功告成,直接執行包,結果如圖所示:
SQL 2008依據條件拆分列
在為人事局做報表過程中,遇到乙個棘手的問題。客戶要求把資料庫中的一列資料依據條件分成多列。比方 資料庫中有省份這麼一列資料 客戶要求依據省份分類。河北省一列 北京市一列 天津市一列。剩下的為其它。目標效果例如以下 手工編寫的sql語句version1.0版 select 河北 parsename p...
python按條件拆分列表 按條件將列表拆分成塊
你為什麼不換個角度想想。你可以把每一次都對映成乙個dict import re from collections import defaultdict regex re.compile a z d a z t asdf 1 bhd uuu 2 ggg asdf 2 bhd uuu 1 ggg asd...
Oracle 字串拆分做條件方案
一般oracle存過接受外部傳入的資料有兩種方式 1 每個引數定義乙個入參變數 2 只定義乙個入參變數,外部所有引數都按照特定格式的字串傳給變數後,資料庫進行字串切分處理。當然,作為乙個dba,我還是喜歡每個引數定義乙個入參變數,後期的擴充套件維護都比傳入字串強,當然缺點就是傳入引數不能太多,要是有...