zoukankan      html  css  js  c++  java
  • 条件拆分控件使用

    在进行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,所以需要拖入两个目标控件。当然在导入前有必要进行数据转换,数据源和目标的字段类型要匹配。如图所示:

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

  • 相关阅读:
    第十四周 Leetcode 315. Count of Smaller Numbers After Self(HARD) 主席树
    POJ1050 To the Max 最大子矩阵
    POJ1259 The Picnic 最大空凸包问题 DP
    POJ 3734 Blocks 矩阵递推
    POJ2686 Traveling by Stagecoach 状态压缩DP
    iOS上架ipa上传问题那些事
    深入浅出iOS事件机制
    iOS如何跳到系统设置里的各种设置界面
    坑爹的私有API
    业务层网络请求封装
  • 原文地址:https://www.cnblogs.com/zhouzhou-aspnet/p/3845061.html
Copyright © 2011-2022 走看看