字词查找转换将从转换输入列的文本中提取的字词与引用表中的字词进行匹配,然后计算出查找表中的字词在输入数据集中出现的次数,并将计数与引用表中的此字词一并写入转换输出的列中。此转换对于创建基于输入文本并带有词频统计信息的自定义词列表很有用。
本章功能:取出一个表中某字段的数据,并取出另一个表中的关键词,判断关键词在源记录中出现的次数。
1. 先创建模拟表 [CustFeedback],将被用于搜索的表。
2 . 表[SearchKey],关键词表
代码如下:
/*
drop table [CustFeedback]
drop table [SearchKey]
delete from [CustFeedback]
delete from [SearchKey]
delete from [Data_Analyze]
*/
--用于查找的表
CREATE TABLE [CustFeedback] (
[Srlno] int identity(1,1),
[UserID] int,
[Feedback] nvarchar(100)
)
GO
--关键词表
CREATE TABLE [SearchKey] (
[Srlno] int identity(1,1),
[Keyword] nvarchar(100)
)
GO
INSERT INTO [CustFeedback]([UserID],[Feedback])
values
(100,'Heard Touch screen'),
(101,'Smooth slicing'),
(102,'Getting problem in installing new application'),
(103,'Application get hangs duringcall'),
(104,'Touch screen not working properly'),
(105,'No long battery backup'),
(106,'Phone get hang while playing games'),
(107,'Screen size is too small'),
(108,'Qualty of screen guard is bad'),
(109,'Bilt-in memory is too small'),
(110,'rescreen'),
(111,'Screen and Screen')
GO
INSERT INTO [SearchKey]([Keyword])
values ('screen'),('Touch screen not working properly')
GO
3. 创建一个【数据流任务】,双击编辑。首先,创建一个数据流源【OLE DB 源】
4. 编辑【OLE DB 源】,连接用于查找的表。
5. 添加【数据转换】组件。字词查找转换只能使用数据类型为 DT_WSTR 或 DT_NTEXT 的列。如果列包含文本,但不具有这两种数据类型之一,则数据转换可以将数据类型为 DT_WSTR 或 DT_NTEXT 的列添加到数据流,并将列值复制到新列。然后,数据转换的输出就可以用作字词查找转换的输入。
编辑组件。将被用于查找的列 Feedback 转变数据类型为 Unicode 文本流[DT_NTEXT],输出名字改为Converted_Feedback
6. 添加【字词查找】组件到数据流:
编辑组件,只能以 OEL DB 方式连接数据库。连接数据库,引用关键词表:
点击选项 字词查找,设置查找引用,将可输入列【Converted_Feedback】关联到可引用列【Keyword】。
并且勾选UserID和Converted_Feedback作为输出。
高级选项还可以设置是否区分大小写查找。关键词会忽略首字母为大写的。
7. 添加,目标组件【OLE DB 目标】:
编辑组件,连接到任意数据库,新建一个表:
映射到目标列:
8 . 编译结果:
数据库结果:
Terms : 在输入列中找到的关键词
Frequency :每行出现关键词的次数
UserID : 表CustFeedback 的UserID列
Converted_Feedback :被查找的列
我在用中文测试的时候没有成功。
中文在数据转换组件中:
转为Unicode 文本流[DT_NTEXT],则转换后的列无数据输出;
转为Unicode 文本流[DT_NSTR],则正确输出。
在找关键字的时候,无论中文关键字在数据库什么类型(如 varchar、nvarchar、text 、ntext……),都没找到结果,错误输出也没有。
中文测试失败!
参考:http://www.codeproject.com/Tips/574437/Term-Lookup-Transformation-in-SSIS