65.9K
CodeProject 正在变化。 阅读更多。
Home

SQL 11 (代号 Denali) 入门 - 第五部分 (CTP 3 中的 SSIS 功能)

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.60/5 (7投票s)

2011年8月18日

CPOL

11分钟阅读

viewsIcon

28857

downloadIcon

753

本文将从 SSIS 的角度探讨 Denali CTP3 为我们提供的新功能。

SQL 11 (代号 Denali) 入门 - 第五部分 (CTP 3 中的 SSIS 功能)

目录

  1. 引言
  2. 背景
  3. SSIS 新功能和增强功能
    1. SSIS 表达式任务
    2. DQS 清洁组件
    3. 加载具有可变行格式的文件
    4. 以不同样式显示成功和失败
    5. 按名称排序包
    6. 共享连接管理器
    7. 新的表达式语言函数 (Left, Token, TokenCount)
    8. 包参数选项卡
    9. 移除数据源和数据源视图文件夹
    10. 解决方案资源管理器现在有项目参数节点
  4. 结论

引言

在 Denali CTP 1 于 2010 年 11 月 8 日发布后,下一个重要版本是在 2011 年 7 月 12 日推出的 **Denali CTP 3**。CTP3 提供 32 位和 64 位版本。一如既往,Denali 为 SQL 用户带来了许多新功能,无论是开发人员、管理员还是商业智能 (BI) 专业人士。在本系列中,我们将探讨此 CTP 中包含的一些 **SSIS 的新功能**。

背景

在过去几年中,Microsoft 在开发人员工具箱中引入了许多技术。随着 SQL Server 2005(代号 **Yukon**)的问世,SQL Server 的术语发生了巨大变化,在其后续版本,如 SQL Server 2008(代号 **Katmai**)和 SQL 11(代号 **Denali**)中,也保持了引入新功能、增强功能和改进的步伐。在本文中,我们将从 SSIS 的角度探讨 Denali CTP 3 已经为我们提供的一些新功能。此前我们已经看到了 Denali CTP1 中所做的增强。后续文章将重点介绍其他领域的增强功能。

您可以通过以下方式阅读我关于 Denali 的其他文章:

  1. SQL 11 (代号 Denali) 入门 - 第一部分 (CTP 1 中的 SSMS 功能)
  2. SQL 11 (代号 Denali) 入门 - 第二部分 (CTP 1 中的 T-Sql 功能)
  3. SQL 11 (代号 Denali) 入门 - 第三部分 (CTP 1 中的 SSIS 功能)
  4. SQL 11 (代号 Denali) 入门 - 第四部分 (CTP 1 中的独立数据库)

SSIS 新功能

I. SSIS 表达式任务

我们在工具箱中新增了一个名为**表达式任务**的任务组件。它的作用是在运行时将 SSIS 表达式的结果分配给变量。

让我们来看一个实际的例子。我们将创建一个表达式来计算一个人的年龄。

打开 BIDS,在“控制流”面板的工具箱中,我们会找到“表达式任务”。

1.jpg

现在让我们创建一个包级别的变量。首先,右键单击设计器并选择**变量**。

2.jpg

然后在出现的变量窗口中,创建一个名为 **Age**、类型为 **Int32**、作用域为 **Package** 的变量。

3.jpg>

拖放一个表达式任务。双击它,表达式生成器将打开,我们可以在其中找到已创建的包变量。

4.jpg

在表达式文本框中,让我们输入以下表达式:

@[User::Age] = DATEDIFF("YY", (DT_DBTIMESTAMP)"01/01/1999",GetDate())

然后单击“评估表达式”按钮。

5.jpg

单击“确定”。接下来,拖放一个脚本任务组件。

6.jpg

单击“确定”按钮。然后在 **ReadOnlyVariable** 属性中,输入我们创建的变量。

7.jpg

接下来,单击“编辑脚本”按钮并添加以下代码:

public void Main()
{
	
 string displayMessage = "Your age is {0}";
 MessageBox.Show(string.Format(displayMessage,Dts.Variables[0].Value.ToString())); 
 Dts.TaskResult = (int)ScriptResults.Success;
}

运行应用程序,我们将看到结果。

8.jpg

**注意:**在创建表达式时,我们应该注意不要包含任何空格;否则,它将显示错误,如下所示:

9.jpg

II. DQS 清洁组件

作为转换组件的一部分,又新增了一个新组件。它是数据质量服务 (DQS) 清洁转换组件。它帮助我们根据我们构建的知识库来清洁数据。本文将不侧重于 DQS,因为它是一个独立的主题,并将很快发布。在这里,我们将专注于创建我们自己的知识库,然后基于该知识库验证记录。

我们需要创建我们自己的知识库。

我们的目标是,我们的知识库将包含国家/地区域值,并且规则是国家/地区长度应大于或等于 5 且不应缩写。此外,如果用户记录的值为“England”,它将被更正为“United Kingdom”。

为此,让我们遵循以下步骤:

连接到 DQS 服务器。

10_new.jpg

正确连接后,接下来单击“**知识库管理**”类别下的“**新建知识库**”按钮。

11_new.jpg

完成后,我们现在可以创建新的知识库。

12_new.jpg

让我们输入一个域名称,提供一些描述,然后单击创建按钮。接下来创建域。

13_new.jpg

单击“**创建域**”按钮后,我们将看到“**创建域**”弹出窗口。我们需要输入一个域名称,其余保持不变。单击“确定”按钮。

14_new.jpg

在右侧,我们可以看到有关为相关域设置数据质量规则的选项。

15_new.jpg

接下来,我们应该创建一些将应用的规则。为此,让我们单击“**域规则**”选项卡。

16_new.jpg

接下来,我们需要单击“**添加新域规则**”按钮来创建新的域规则。单击后,我们将看到以下屏幕:

17_new.jpg

输入名称、描述,然后从“构建规则”下拉列表中选择“长度大于或等于”,并将值设置为 5,如下所示:

18_new.jpg

此外,我们还希望应用规则,即任何国家/地区名称都不应被缩写。为此,让我们单击“**向选定的子句添加新条件**”按钮。

19_new.jpg

从下拉列表中,让我们选择“值不包含”,并将值设置为“.”(点)。

20_new.jpg

之后,单击“**应用所有规则**”按钮。

21_new.jpg

单击“是”,我们将收到成功消息,表明域规则已成功应用。

22.jpg

设置好域规则后,下一步将是添加域值。所以让我们访问“**域值**”选项卡并单击“**添加新域值**”按钮。

23_new.jpg

现在让我们添加一些域值。请注意,如果有人输入“England”的值,输出将被更正为“United Kingdom”。

24_new.jpg

完成后,单击“**完成**”按钮。

作为最后一步,我们需要单击“**发布**”按钮,KB(知识库)将公开可用。

25.jpg

我们可以看到“OurTestDomain”已被创建。

26.jpg

有关 DQS 知识库和域的更多信息,您可以参考这篇文章

这样,我们的知识库就准备好了。接下来我们需要准备我们的源数据。在本例中,我们将使用 **Excel** 作为数据源。Excel 数据源如下:

27.jpg

打开 BIDS 并将数据流任务拖放到“控制流”设计器上。在数据流设计器中,首先创建一个**Excel 源**,并提供适当的文件名和路径以及所需的配置。接下来,让我们拖放一个 DQS 清洁组件。

28.jpg

双击它以打开 DQS 清洁转换编辑器。

29.jpg

我们需要提供连接管理器。所以单击“**新建**”按钮,连接管理器窗口就会打开。

30.jpg

指定服务器名称,然后单击“测试连接”以获得成功消息。

31_new.jpg

接下来,我们需要指定数据质量知识库。我们将选择我们刚刚创建的“**OurTestDomain**”。可用的域将在此列出。

32_new.jpg

接下来,让我们访问“映射”列。

33.jpg

选中“Country Input”列旁边的复选框。

34.jpg

从“域”下拉列表中,选择“Country”。为“Corrected”和“Status”输出别名命名。单击“确定”。添加“行采样”和“数据查看器”。

35.jpg

运行包。数据查看器中的输出如下:

36.jpg

前 4 行很容易理解,因为它已按照我们在规则中定义的方式执行。Country 长度必须 >= 5,因此 USA Country 状态为“无效”。它不能包含任何 (.),因此 U.K. 是无效的。名称 England 必须更改为 United Kingdom,这已得到反映。由于梵蒂冈城没有输入,因此 Country 状态为“未知”。这是一个成功。

37.jpg

**注意:**此操作是异步的,如下面的图像所示:

38.jpg

III. 加载具有可变行格式的文件

加载行格式可变的文件的内容一直都不是一个顺畅的方法。考虑以下示例:

39.jpg

在此示例中,我们可以看出文本文件包含一些父子内容。标题包含有关经理的信息,而详细部分包含在经理手下工作的员工的信息。

在 Denali CTP 3 之前的 SSIS 方法中,在“平面文件源”组件中,我们可以像这样预览内容:

40.jpg

正如我们可以发现的那样,记录集已经混乱,如红色突出显示的。在 Denali CTP 3 之前的 SSIS 方法中处理这种情况的一种方法是将源更改为如下:

41.jpg

然后,“平面文件源”组件的预览将如下所示:

42.jpg

假设现在我们想将数据分为“经理记录”和“经理员工记录”,我们可以通过添加“条件拆分”组件并指定以下条件来继续:

43.jpg

然后像这样添加“行采样”,我们可以得到如下记录:

44.jpg

但 Denali CTP 3 的情况有所不同。当我们加载这样的文件时,预览如下:

45.jpg

使用相同的设计运行包,会产生以下结果:

46.jpg

IV. 以不同样式显示成功和失败

在 Denali CTP 3 之前的 SSIS 方法中,表示成功/失败的方式如下:

47.jpg

但在 Denali CTP 3 中,它已更改为:

48.jpg

V. 按名称排序包

另一个小功能是,我们现在可以像下面这样按名称对包进行排序:

排序包名称之前

49.jpg

排序包名称之后

50.jpg

VI. 共享连接管理器

在早期版本中,无法在包之间共享连接。例如,在 Package1 中,我们正在使用一个平面文件源组件。

51.jpg

可以看到,在 Package1.dtsx 中我们有一个名为 **TxtFileConnManager** 的连接管理器。现在让我们创建另一个名为 Package2.dtsx 的包。

52.jpg

可以看到,没有选项可以重用现有连接。我们需要创建一个新连接。

但在 Denali CTP 3 中,我们有了**连接管理器**,通过它可以共享连接。

53.jpg

单击“连接管理器”,将打开 SSIS 连接管理器窗口。

54.jpg

选择 FLATFILE 并单击“添加”按钮,然后为连接管理器命名。

55.jpg

点击“确定”。

56.jpg

可以看到,我们新的连接管理器已添加。由于它是共享的,因此我们可以在任何包中访问它。让我们打开 Package1.dtsx,我们会在下方找到连接管理器。

57.jpg

Package2.dtsx 也同样适用。

VII. 新的表达式语言函数 (Left, Token, TokenCount)

在表达式语言中,我们有三个新函数:LeftTokenTokenCount

58.jpg

让我们逐一分析这些函数:

**Left:**返回具有指定字符数的字符串的左侧部分。此函数在 T-SQL 中已存在很长时间。同样,它的对应函数 Right 在 SSIS 中也已存在很长时间。

因此,如果在表达式任务中运行以下代码,我们将得到以下输出:

	@[User::Result1] =  LEFT("Test for Left function", 4)

       //output : Test

59.jpg

在本例中,Left 函数从提供的字符串中剥离了前 4 个字符。

**Token:**返回字符串中指定标记的出现。

因此,如果在表达式任务中运行以下代码,我们将得到以下输出:

	@[User::Result1] =  TOKEN("Test for Token Function"," ",2)

	//output : for

60.jpg

因为 for 出现在第二个位置。

**TokenCount:**返回字符串中的标记数。

因此,如果在表达式任务中运行以下代码,我们将得到以下输出:

	@[User::Result2] =  TOKENCOUNT("Test for TokenCount function"," ")

	//output : 4

61.jpg

因为有 4 个标记。

我们甚至可以像下面这样组合 Token 和 TokenCount:

	@[User::Result1] =  TOKEN("Test for Token Function"," ",  TOKENCOUNT("Test for TokenCount function"," "))

	//output : Function

因为,TokenCount 函数返回 4,而在第四个位置,我们有“Function”。

VIII. 包参数选项卡

现在,在设计器中,我们有一个用于包范围参数的专用选项卡。

62.jpg

IX. 移除数据源和数据源视图文件夹

在 SSIS 2008 R2 中

63.jpg

在 Denali CTP 3 中

64.jpg

X. 解决方案资源管理器现在有项目参数节点

在 Denali CTP1 中,可以通过在解决方案资源管理器中右键单击来查看项目参数。但在 Denali CTP 3 中,它们拥有自己独立的节点。

65.jpg

结论

在本系列中,我们已经看到了 SSIS Denali CTP 3 中的一些很棒的增强功能,例如表达式任务、DQS 清洁组件、加载具有可变行格式的文件、新的表达式语言函数(Left、Token、TokenCount)等。但这还不是全部。还有很多内容有待探索。我将在探索时继续添加这些主题。敬请关注并分享您对本文的看法。

© . All rights reserved.