在本课中,将创建一个简单 ETL 包,该包可以从单个平面文件(Flat File)源中提取数据,使用两个查找转换组件转换该数据,然后将该数据写入AdventureWorksDW2012 的 FactCurrency 事实数据表中。 在本课中,您还将学习如何创建新包、添加和配置数据源和目标连接以及使用新的控制流和数据流组件。

AdventureWorksDW2012 下载地址:http://msftdbprodsamples.codeplex.com/releases/view/55330

Step 1:创建新的Integration Services项目

在开始菜单中找到SQL Server Data Tools并打开,在Microsoft SQL Server下。

创建新的Integration Services Project。

Step 2:添加和配置平面文件连接管理器

文件中的数据导入到目标库,需要创建平面文件(Flat File)连接。(点击文件连接,下载SQL2012.Integration_Services.Create_Simple_ETL_Tutorial.Sample.zip)

1. Connection Managers中右键,选择New Flat File Connection...

2. 在File Name中点击浏览,选中刚才下载文件中的SampleCurrencyData.txt文件

3. 取消"Column names in the first data row"复选框

4. 在Advanced页签,更改Column名和数据类型。

  • 将 Column 0 名称属性改为 AverageRate。类型改为float。

  • 将 Column 1 名称属性改为 CurrencyID。类型改为DT_WSTR。

  • 将 Column 2 名称属性改为 CurrencyDate。类型改为DT_DBDATE。

  • 将 Column 3 名称属性改为 EndOfDayRate。类型改为float。

Step 3:添加和配置OLE DB连接管理器

1. Connection Managers中右键,选择New OLE DB Connection...

2. 点击New,并连接上AdventureWorksDW2012数据库

Step 4:将数据流任务添加到包

1. 单击Control Flow,然后打开SSIS Toolbox

2. 将Data Flow Task拖拽到Control Flow,并Rename为Extract Sample Currency Data

Step 5:添加并配置平面文件源

1. 双击Step 4创建的Extract Sample Currency Data,会打开Data Flow页签。

2. 打开SSIS Toolbox => Other Source => Flat File Source,拖拽到Data Flow中,并Rename额外Extract Sample Currency Data。

Step 6:添加并配置查找转换

添加Lookup转换组件,给予DimCurrency表的CurrencyKey,该字段和平面文件的CurrencyID匹配。

  1. 在SSIS Toolbox中找到Lookup组件,拖拽到Data Folw中,并Rename为Lookup Currency Key

  2. 双击Lookup Currency Key,进行编辑

    General页签Cache Model选择"Full cache",Connection Type选择"OLE DB connection manage"

    Connection页签,OLE DB连接管理器选择localhost.AdventureWorksDW2012,使用SQL查询的结果,输入如下SQL语句,

  1. select * from (select * from [dbo].[DimCurrency]) as refTable
  2. where [refTable].[CurrencyAlternateKey] = 'ARS'
  3. OR
  4. [refTable].[CurrencyAlternateKey] = 'AUD'
  5. OR
  6. [refTable].[CurrencyAlternateKey] = 'BRL'
  7. OR
  8. [refTable].[CurrencyAlternateKey] = 'CAD'
  9. OR
  10. [refTable].[CurrencyAlternateKey] = 'CNY'
  11. OR
  12. [refTable].[CurrencyAlternateKey] = 'DEM'
  13. OR
  14. [refTable].[CurrencyAlternateKey] = 'EUR'
  15. OR
  16. [refTable].[CurrencyAlternateKey] = 'FRF'
  17. OR
  18. [refTable].[CurrencyAlternateKey] = 'GBP'
  19. OR
  20. [refTable].[CurrencyAlternateKey] = 'JPY'
  21. OR
  22. [refTable].[CurrencyAlternateKey] = 'MXN'
  23. OR
  24. [refTable].[CurrencyAlternateKey] = 'SAR'
  25. OR
  26. [refTable].[CurrencyAlternateKey] = 'USD'
  27. OR
  28. [refTable].[CurrencyAlternateKey] = 'VEB'

  3. 在Columns中,将CurrencyID拖放到CurrencyAlternateKey上,并选中CurrencyKey的复选框。

  

  

添加Lookup转换组件,给予DimDate表的DateKey,该字段和平面文件的CurrencyDate匹配。

  1. 在SSIS Toolbox中拖拽Lookup到Data Flow中,Rename为Lookup Date Key并放在Lookup Currency Key下面。

  2. 将Lookup Currency Key 和Lookup Date Key连接,Output选择Lookup Match Output.

  3. 双击Lookup Date Key进行编辑

    Gerenal:选择partial cache和OLE DB connection manager

    Connection:选中DimDate表

    Columns:将Currency Date拖放到FullDateAlternateKey上并选中DateKey的复选框。

  

  

Step 7:添加和配置OLE DB目标

  1. 将SSIS Toolbox => Other Destincations => OLE DB Destination拖放到Data Folw中,并Rename为Sample OLE DB Destination。

  2. 连接Lookup Date Key和Sample OLE DB Destination,Output选择Lookup Match Output。

  3. 双击Sample OLE DB Destination,进行编辑

    Connection Manager:在Name of the table or the view中选择[dbo].[FactCurrencyRate],点击New,将脚本中的TableName更改为NewFactCurrencyRate。

    Mappings:所有源列都已经映射到了目标列。

  

  

Step 8:使ETL包更易于理解

  1. 选中所有的数据流组件,在菜单栏上进行Format =>Make Same Size => Both,Format => Align => Lefts

  2. 在Data Folw空白处点击右键,Add annotation,输入批注信息

  

Step 9:测试ETL包

  1. 工程完成后,控制流和数据流如下图所示。

  2. 点击Debug => Start Debugging,包开始运行,结果有1097个行被成功添加到NewFactCurrency表中

  

  

SSIS教程:创建简单的ETL包 -- 1. 创建项目和基本包的更多相关文章

  1. 【Maven】项目打包-war包-Jar包[IDEA将项目打成war包]

    [Maven]项目打包-war包-Jar包[IDEA将项目打成war包] 2017年01月31日 00:21:06 阅读数:22912 标签: ideamaven发布博客插件 更多 个人分类: ❷ J ...

  2. SSIS教程:创建简单的ETL包 -- 2. 添加循环(Adding Looping)

    在第 1 课:创建项目和基本包中,创建了从单个平面文件源中提取数据的包,然后使用查找转换功能对数据进行了转换,最后将数据加载到AdventureWorksDW2012 示例数据库的 FactCurre ...

  3. SSIS教程:创建简单的ETL包

    SSIS: Microsoft SQL Server Integration Services.是一个可用于生成高性能数据集成解决方案的平台,其中包括数据仓库的提取(Extract).转换(Trans ...

  4. SSIS教程:创建简单的ETL包 -- 6. 对项目部署模型使用参数(Using Parameters with the Project Deployment Model)

    在本课中,将修改在第 5 课: 添加包部署模型的包配置中创建的包,以便使用项目部署模型.您将使用一个参数替换该配置值,以便指定示例数据位置.还可以复制本教程附带的已完成的 Lesson 5 包. 使用 ...

  5. SSIS教程:创建简单的ETL包 -- 5. 添加包部署模型的包配置(Adding Package Configurations for the Package Deployment Model)

    包配置允许您从开发环境的外部设置运行时属性和变量. 配置允许您开发灵活且易于部署和分发的包.Microsoft Integration Services 提供了以下配置类型: XML 配置文件 环境变 ...

  6. SSIS教程:创建简单的ETL包 -- 3. 添加日志(Adding Logging)

    Microsoft Integration Services 包含日志记录功能,可通过提供任务和容器事件跟踪监控包执行情况以及进行故障排除. 日志记录功能非常灵活,可以在包级别或在包中的各个任务和容器 ...

  7. SSIS教程:创建简单的ETL包 -- 4. 增加错误处理流程(Adding Error Flow Redirection)

    为了处理在转换过程中可能发生的错误,MicrosoftIntegration Services 允许根据每个组件和每个列来决定如何处理无法转换的数据. 可以选择忽略某些列中的失败.重定向整个失败的行或 ...

  8. 在IntelliJ IDEA里创建简单的基于Maven的SpringMVC项目

    后来发现了一种更加方便的创建方式,即第一步不选择Create from archetype,创建完毕后打开Project Structure-Modules,然后添加Web,但是注意添加的Web里面的 ...

  9. eclipse将引用了第三方jar包的java项目打成jar包

    今天用java开发了一个项目,想要打成jar包,并在linux环境下运行.但是运行时引用的第三方jar包却显示classNotFind错误. 于是查了一下解决办法,在此贴出来,方便以后查阅. 用Ecl ...

随机推荐

  1. Django FileFieldManage

    default_storage >>> from django.core.files.base import ContentFile >>> from django ...

  2. 《Beginning Java 7》 - 4 - finalize() 手动垃圾回收

    当我们想在系统进行垃圾回收时做一些特定的工作,我们就可以重写 finalze() 函数,因为 Object 的 此函数是空的. 比如: protected void finalize() throws ...

  3. iOS核心动画之蒙版

    应用场景 想让一些古卷文字慢慢渐变成背景色,而不是一个突兀的边界 layer的边框不是圆角,而是有星形框架的图片 方法 设置mask属性.这个属性也是一个layer属性,但只有alpha属性有效果.即 ...

  4. P4175 [CTSC2008]网络管理 树剖+树套树

    $ \color{#0066ff}{ 题目描述 }$ M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个部门之间协同工作,公司搭建了一个连接整个公司的通 ...

  5. 干掉Vivado幺蛾子(1)-- Xilinx Tcl Store

    目录 1. 安装Xilinx Tcl Store 2. 手动更新 2.1 下载库 2.2 修改环境变量 参考文献: 最近在跟着高亚军老师的分析文章来学习Xilinx最近发布的<UltraFast ...

  6. Unity 行为树-中断机制

    一.中断类型 设置了中断之后,行为树会检测执行过的子条件节点,当条件节点的状态发生变化时,会中断正在执行的Running节点,转而立即执行该条件节点. 行为树的打断类型有4种: None Self L ...

  7. JAVA中 package 和 import 的使用

    1.打包--package 包名一般为小写,而类名的第一个字母一般为大写,这样在引用时,可以明显的分辨出包名和类名.如果在类的定义之前没有使用package定义包名,那么该类就属于缺 省的包. 1.1 ...

  8. maven相关的说明以及通过它来创建项目

    1.什么是maven maven的本质是一个项目构建工具 2.maven的作用 那么作为一个项目构建工具我们又为什么要使用它以及好处呢 首先项目构建的本质是什么:项目代码从源代码到程序文件的过程是代码 ...

  9. mysql语句插入前判断数据是否重复

    在mysql中插入数据有时需要判断数据插入是否重复 语句编写:insert into 表(相应字段) select 相应字段 from dual where not exists (select 相应 ...

  10. 更改kindeditor编辑器,改用支持h5的video标签替换原有embed标签

    kindeditor是一款不错的可视化编辑器,不过最近几年似乎没在更新,现在h5趋于主流,正好有个业务需要编辑器支持mp4视频的播放,考虑到现在h5中的video标签的强大,于是决定将原来系统中的em ...