SSIS 基于其他列替换列值

SSIS replace column value based on another columns

提问人:kaintxu 提问时间:11/3/2023 最后编辑:Dale Kkaintxu 更新时间:11/3/2023 访问量:26

问:

我有一个表格,除其他字段外,还有以下内容。

enter image description here

我有一个 ETL on SSIS 包,它从此表中读取这两个字段和许多其他字段。我怎样才能做到,在写到最终表格之前,对于Cod_Cliente的每一行1111111我将 Cliente 值替换为“Trial”?

我最初的想法是创建一个派生列工具来创建一个新列,其逻辑是只复制值,除非我有提到的代码,在这种情况下,我添加了“试用”文本,但我想知道是否有更有效的方法来更新值。

SQL 服务器 SSIS ETL

评论

0赞 Dale K 11/3/2023
根据问题指南,请不要发布代码、数据、错误消息等的图像 - 将文本复制或键入到问题中。请保留将图像用于图表或演示渲染错误,这些错误无法通过文本准确描述。

答:

0赞 billinkc 11/3/2023 #1

我只知道您共享的内容,我的方法是在从源表查询数据时修复数据

SELECT col1
, Cod_Cliente
, CASE WHEN Cod_Cliente = 1111111 THEN 'Trial' ELSE Cod END As Cod
FROM dbo.MyTable

这样一来,一切都在进入管道之前就已经设置好了。

如果您想使用派生列,我更喜欢新列而不是更新现有列,因为它使我更容易调试。无论哪种方式,表达式都将类似于(区分大小写的列名),假设Cod_Cliente的数据类型是整数。

([Cod_Cliente] == 1111111) ? "Trial" : [Cod]

评论

0赞 kaintxu 11/3/2023
谢谢,这正是我一直在寻找的,我过去也做过,但我太专注于做一个 SSIS 工具的改变。