首页 > 其他 > 详细

条件拆分控件使用

时间:2014-07-16 18:44:07      阅读:343      评论:0      收藏:0      [点我收藏+]

在进行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源,双击这个控件进行数据源的设置,如图所示:

bubuko.com,布布扣

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

bubuko.com,布布扣

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

bubuko.com,布布扣

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

bubuko.com,布布扣

bubuko.com,布布扣

bubuko.com,布布扣

 

 

 

条件拆分控件使用,布布扣,bubuko.com

条件拆分控件使用

原文:http://www.cnblogs.com/zhouzhou-aspnet/p/3845061.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!