类似于 Power Query 的 SSIS 条件列

SSIS Conditional Column Similar to Power Query

我对 SSIS 有点陌生,因为我经常在 Excel 中使用 Power Query。是否可以在 SSIS 中创建条件列,类似于在 Power Query 中的创建方式。

例如,在 Power Query 中,您可以创建一个条件列来说明 IF 列 [FileName] 包含美国、加拿大、美国、美国 = "North America" 其他 "null"。它将创建一个包含北美的新列,任何不符合条件的列都将为空。在 SSIS 中有这样的可能吗?我已经尝试使用 Substring 和 Findstring,但它并不能完全满足我的需要。

当然可以。在数据流任务(又名数据泵)中有一个派生列组件,您可以在其中向数据流添加列并包含自定义表达式。

基本上您要在 derived column 中寻找这样的 ternary operator 条件:

(FINDSTRING([Name], "USA", 1) > 0) || (FINDSTRING([Name], "Canada", 1) > 0) || (FINDSTRING([Name], "United States", 1) > 0) || (FINDSTRING([Name], "America", 1) > 0) ? "North America" :  NULL(DT_WSTR, 13)

为了解释它,我将其缩进为:

(FINDSTRING([Name], "USA", 1) > 0) || 
(FINDSTRING([Name], "Canada", 1) > 0) || 
(FINDSTRING([Name], "United States", 1) > 0) || 
(FINDSTRING([Name], "America", 1) > 0) ? "North America" : 
                                          NULL(DT_WSTR, 13)

要进一步修改它,您可以使用以下指南:

  • 包含 like '%value%' : FINDSTRING(col, "value", 1) > 0
  • like 'value%' 开始:FINDSTRING(col, "value", 1) == 1
  • like '%value' 结尾:REVERSE(LEFT(REVERSE(col), X)) == "value"

来源:sqlservercentral blog