在没有 DQS 的情况下使用 SSIS 中的知识库进行数据清理
Data cleansing with a knowledge base in SSIS without DQS
对于一项学校作业,我们必须为一家虚构的运输公司设计并填充数据仓库。我用所有 "dirty" 数据创建了一个 PSA 数据库,现在正在设计 ETL 过程。整个过程需要在SSIS中完成,除了一些基础教程外,我对这个程序的了解非常有限。
我被困在清理 table 中的一个列的过程中,其中一些国家/地区写错了。我做了一个参考 table,其中一栏是语法错误,另一栏是国家名称的正确格式。在这里您可以看到知识库的片段 table:
在这里您可以看到带有 "dirty" 数据的 table 片段:
如何在 SSIS 数据流中从知识库 table 中搜索并替换 "Country" 列中的错误数据?我不认为我可以使用模糊查找,因为错误的数据包含国家名称的缩写。
我们不能使用 Microsoft DQS,因为我猜这对我们来说太容易了...
提前致谢!
我觉得你想多了。使用标准查找并从知识库 table 中获取更正(如果存在),如果存在则使用更正,如果不存在则使用原始国家/地区名称。没有模糊查找,没有 LIKE 运算符,只有相等性检查。
首先确保 Error
列是唯一的。您可能想要删除区分大小写的变体并使用不区分大小写的整理声明列,这样您就不必为每个可能的错误添加所有大写字母变体。
-- "CI" means case insensitive, "AI" means ascent insensitive
ALTER TABLE CountryVariations ALTER COLUMN Error VARCHAR(100) COLLATE Modern_Spanish_CI_AI
删除已插入的重复项:
;WITH Duplicates AS
(
SELECT
C.Error,
C.Country,
RepeatRanking = ROW_NUMBER() OVER (PARTITION BY Error ORDER BY Error)
FROM
CountryVariations AS C
)
DELETE D FROM
Duplicates AS D
WHERE
D.RepeatRanking > 1
然后在您的 SSIS 包中使用经典的 LookUp 组件,将源的 Country
值与 CountryVariations
table 和 [=23] 中的 Error
列连接起来=] 更正后的标准 Country
列。当您的 table 中没有匹配的变体时,您将不得不考虑该怎么做(重定向到错误流、失败包、分配默认国家等)。
对于一项学校作业,我们必须为一家虚构的运输公司设计并填充数据仓库。我用所有 "dirty" 数据创建了一个 PSA 数据库,现在正在设计 ETL 过程。整个过程需要在SSIS中完成,除了一些基础教程外,我对这个程序的了解非常有限。
我被困在清理 table 中的一个列的过程中,其中一些国家/地区写错了。我做了一个参考 table,其中一栏是语法错误,另一栏是国家名称的正确格式。在这里您可以看到知识库的片段 table:
在这里您可以看到带有 "dirty" 数据的 table 片段:
如何在 SSIS 数据流中从知识库 table 中搜索并替换 "Country" 列中的错误数据?我不认为我可以使用模糊查找,因为错误的数据包含国家名称的缩写。
我们不能使用 Microsoft DQS,因为我猜这对我们来说太容易了...
提前致谢!
我觉得你想多了。使用标准查找并从知识库 table 中获取更正(如果存在),如果存在则使用更正,如果不存在则使用原始国家/地区名称。没有模糊查找,没有 LIKE 运算符,只有相等性检查。
首先确保 Error
列是唯一的。您可能想要删除区分大小写的变体并使用不区分大小写的整理声明列,这样您就不必为每个可能的错误添加所有大写字母变体。
-- "CI" means case insensitive, "AI" means ascent insensitive
ALTER TABLE CountryVariations ALTER COLUMN Error VARCHAR(100) COLLATE Modern_Spanish_CI_AI
删除已插入的重复项:
;WITH Duplicates AS
(
SELECT
C.Error,
C.Country,
RepeatRanking = ROW_NUMBER() OVER (PARTITION BY Error ORDER BY Error)
FROM
CountryVariations AS C
)
DELETE D FROM
Duplicates AS D
WHERE
D.RepeatRanking > 1
然后在您的 SSIS 包中使用经典的 LookUp 组件,将源的 Country
值与 CountryVariations
table 和 [=23] 中的 Error
列连接起来=] 更正后的标准 Country
列。当您的 table 中没有匹配的变体时,您将不得不考虑该怎么做(重定向到错误流、失败包、分配默认国家等)。