【问题标题】:SSIS - Derived Column Replace NULL Values with empty stringSSIS - 派生列用空字符串替换NULL值
【发布时间】:2021-12-09 22:21:43
【问题描述】:
ISNULL([1 (Q1_1) ])? "": [1 (Q1_1) ]

当我将列拖到左上角的“列”框下时,我的列就是这样显示的,

[1 (Q1_1) ].

为什么我的表达不起作用?我想用空字符串替换 NULL 值。

【问题讨论】:

  • 您是替换现有的[1 (Q1_1) ] 还是定义了一个新列?

标签: ssis null etl derived-column


【解决方案1】:

默认情况下,如果您只是将上述表达式添加到派生列表达式中,SSIS 会给列命名为 Derived Column 1 出于调试目的,我更喜欢这个,尽管我倾向于将列重命名,所以我知道这一点值是从数据流任务中计算出来的。

设置

我有一个 OLE DB 源 -> 派生列 -> 派生列。第二个派生列只是数据查看器的锚点

OLE DB 源

我使用查询作为我的来源来测试您的表达。实际来源在这里并不重要,但我发现直接查询是人们在他们的环境中重现的最容易的方法。

SELECT
    D.col as [1 (Q1_1) ]
FROM
(
    VALUES ('ABC')
    ,(NULL)
   ,('Pickles')
   ,('More pickles')
   ,('NULL')
)D(col);

我有 5 个值、4 个字符串和一个 NULL 实例。最后的 null 只是字母 N-U-L-L 的单词表示,而不是 NULL 。我已经进行了调试会话,其中文字文本在起作用,而不是空占位符。

派生列

  • 派生列名称:派生列 1
  • 派生列:
  • 表达式:ISNULL([1 (Q1_1) ]) ? "" : [1 (Q1_1) ]​​i>
  • 数据类型:Unicode 字符串 [DT_WSTR]
  • 长度:12

派生列 1

这里没有设置,但这允许我在两个组件之间放置一个数据查看器,当我运行时,这就是我所看到的

正如预期的那样,第二行的第二列中的结果值为空。其他 4 行的第二列是第一列中的值的重复。

现在我知道它按预期工作,如果我将 <add as new column> 切换到 Replace '1 (Q1_1) ' 并重新运行,我应该会看到相同的预期值,这次是在“原始”列中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多