【问题标题】:Replace Null columns in ssis替换 ssis 中的 Null 列
【发布时间】:2022-01-05 16:50:41
【问题描述】:

我想添加一个名为 CategoryCode 的列,它将采用 Category 列的前 3 个字母 + Subcategory 列的前 3 个字母 + 任意数字。 问题是我在CategoryCode 列中有一些值,我不必更改。我只需要对为空的值进行操作。 任何人都可以帮助我吗?会有很大帮助的。

【问题讨论】:

    标签: sql-server ssis etl derived-column


    【解决方案1】:

    您可以简单地添加一个派生列,使用以下表达式替换输入 CategoryCode 列:

    REPLACENULL([CategoryCode],LEFT([Category],3) + LEFT([SubCategory],3) + "123")
    

    更新 1 - 添加自动递增编号

    很遗憾,SSIS 派生列不能用于添加自动增量或随机生成的数字。要实现这一点,您需要使用脚本组件转换:

    if(row.CategoryCode_IsNull == true)
        row.outCategoryCode = row.Category.Substring(0,3) + row.SubCategory.Substring(0,3) + id.toString();
    else
        row.outCategoryCode = row.CategoryCode;
    

    更详细的例子:

    【讨论】:

    • 但我必须增加每条记录的数字部分。就像类别代码将是我的主键。
    • 你的数据源是什么?你在读 SQL 吗? @ADITYANARAYAN
    • 问题是... 有一个 category.txt 文件,其中包含 CategoryCode、category 和 subcategory 列。还有另一个产品表,其中包含产品描述、价格、类别和子类别列。我们必须在 categoryCode 的基础上合并这两个文件,使 Category code 成为 Category 表中的主键,并成为 Product 表的外键引用。
    • @ADITYANARAYAN 您需要使用脚本组件来添加增量编号。我在答案中添加了几个示例
    猜你喜欢
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-15
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多