首页 > 代码库 > 条件拆分控件使用

条件拆分控件使用

在进行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(N01,N未提交,NA)INSERT INTO [MemberOrderStatus]([OrderStatusCode],[OrderStatusName],[Status]) VALUES(N02,N已提交,NA)INSERT INTO [MemberOrderStatus]([OrderStatusCode],[OrderStatusName],[Status]) VALUES(N03,N已审核,NA)INSERT INTO [MemberOrderStatus]([OrderStatusCode],[OrderStatusName],[Status]) VALUES(N04,N分拣完成,NA)INSERT INTO [MemberOrderStatus]([OrderStatusCode],[OrderStatusName],[Status]) VALUES(N05,N配送中,NA)INSERT INTO [MemberOrderStatus]([OrderStatusCode],[OrderStatusName],[Status]) VALUES(N06,N签收,NA)INSERT INTO [MemberOrderStatus]([OrderStatusCode],[OrderStatusName],[Status]) VALUES(N07,N退货中,NA)INSERT INTO [MemberOrderStatus]([OrderStatusCode],[OrderStatusName],[Status]) VALUES(N08,N退货入库,NA)INSERT INTO [MemberOrderStatus]([OrderStatusCode],[OrderStatusName],[Status]) VALUES(N09,N配送异常,NA)INSERT INTO [MemberOrderStatus]([OrderStatusCode],[OrderStatusName],[Status]) VALUES(N10,N缺货,NA)INSERT INTO [MemberOrderStatus]([OrderStatusCode],[OrderStatusName],[Status]) VALUES(N11,N订单挂起,NA)INSERT INTO [MemberOrderStatus]([OrderStatusCode],[OrderStatusName],[Status]) VALUES(N12,N已调度,NA)INSERT INTO [MemberOrderStatus]([OrderStatusCode],[OrderStatusName],[Status]) VALUES(N13,N已生成分拣计划,NA)INSERT INTO [MemberOrderStatus]([OrderStatusCode],[OrderStatusName],[Status]) VALUES(N14,N已打印,NA)INSERT INTO [MemberOrderStatus]([OrderStatusCode],[OrderStatusName],[Status]) VALUES(N15,N已生成出库单,NA)INSERT INTO [MemberOrderStatus]([OrderStatusCode],[OrderStatusName],[Status]) VALUES(N16,N已出库,NA)INSERT INTO [MemberOrderStatus]([OrderStatusCode],[OrderStatusName],[Status]) VALUES(N17,N已复核,NA)INSERT INTO [MemberOrderStatus]([OrderStatusCode],[OrderStatusName],[Status]) VALUES(N18,N自退货中,NA)INSERT INTO [MemberOrderStatus]([OrderStatusCode],[OrderStatusName],[Status]) VALUES(N19,N自退货入库,NA)INSERT INTO [MemberOrderStatus]([OrderStatusCode],[OrderStatusName],[Status]) VALUES(N20,N退货已入库,NA)INSERT INTO [MemberOrderStatus]([OrderStatusCode],[OrderStatusName],[Status]) VALUES(N21,N已锁定,NA)INSERT INTO [MemberOrderStatus]([OrderStatusCode],[OrderStatusName],[Status]) VALUES(N99,N取消,NA)

第二步:创建一个Excel文件,用于存放[OrderStatusCode]不等于99的数据。

第三步:打开VS,新建一个SSIS项目。

第四步:在控制流视图中,拖入一个数据流任务,然后双击这个数据流任务,进入数据流任务,在界面中拖入一个OLE DB源,双击这个控件进行数据源的设置,如图所示:

第五步:拖入一个条件拆分控件,双击进行设置,这步是关键,需要把[OrderStatusCode]等于99的数据找出来,导入到数据仓库中,不等于99的数据导入到Excel中。实现的关键就是对函数的使用,大家如果对其中的函数不熟悉,可以MSDN官网学习。 如图所示:

第六步:这时的数据有两个走向,一个是导入数据仓库,第二个是导入到Excel,所以需要拖入两个目标控件。当然在导入前有必要进行数据转换,数据源和目标的字段类型要匹配。如图所示:

第七步:大功告成,直接运行包,结果如图所示: