條件拆分控制項使用

2022-02-21 08:30:10 字數 4154 閱讀 4147

在進行etl資料抽取的時候,往往會對資料進行條件拆分,比如當[工資]》5000時,才進入資料倉儲,否則輸出到excel。類似這種需求。今天就來講解一下條件拆分控制項的使用。達到的目的就是把[orderstatuscode]等於99的輸出到資料倉儲,不等於99的輸出到excel中。

第一步:準備原始資料,建立表以及在表中新增資料,指令碼如下:

create table [dbo].[memberorderstatus](

[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')

第二步:建立乙個excel檔案,用於存放[orderstatuscode]不等於99的資料。

第三步:開啟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,我還是喜歡每個引數定義乙個入參變數,後期的擴充套件維護都比傳入字串強,當然缺點就是傳入引數不能太多,要是有...