0

我的数据源中有一个名为“性别”的列。当前,该列包含六个可能值之一。我想创建一个转换,从源中获取值并将其转换为四个标准化值之一。我该怎么做呢?

到目前为止,我将查找转换添加到设计器表面并检查了选项。我想我可以通过一个简单的 SQL 查询(下面的伪代码)来完成此操作,但我不确定我需要做什么或如何去做。

If Gender = M or Gender = 1 then GenderId = 1
If Gender = F or Gender = 2 then GenderId = 2
If Gender = U then GenderId = 3
If Gender = X then GenderId = 4
... etc.

谢谢!

4

3 回答 3

2

正如我在类似问题中所引用的,SSIS (SQL Server 2008)

选项1

一个派生列,但由于行长,这会变得有点难看。

选项 2

一个查找转换,您将源性别列映射到查找的

SELECT D.Gender, D.GenderId
FROM
(
    SELECT 'M', 1
    UNION ALL SELECT '1', 1
    UNION ALL SELECT 'F', 2
    --- etc
) D (Gender, GenderId);

选项 3

在源查询中修复它。如果您要从数据库中提取此数据,请在此处使用 CASE 语句将 GenderId 的值强制转换为正确的值,以便您可以简化包。

于 2013-06-26T17:42:55.630 回答
0

如果数据源是 SQL 数据库,建议使用 CASE 语句在 SQL 查询中解决。您还应该看到一些性能优势。

于 2013-06-26T16:06:16.983 回答
0

使用派生列转换创建一个新的 StandardizedGender 列。您可以使用立即 if 语句(?: 语法)来构建案例结构。派生列通常是处理此类转换和清理的最佳工具。

于 2013-06-26T16:01:43.143 回答