如何编写SSIS开关/ case表达式?

ave*_*sse 7 ssis case switch-statement

这是一个SQL Server Integration Services(SSIS)表达式问题(我对它很新).

我想在派生列转换中编写一个switch/case表达式 - 基本上,新列可以根据输入列的值有5个不同的可能值.我从谷歌得到的只是(条件)?(真值):(假值)技术,但这仅提供两个可能的值.SSIS表达式是否具有开关/案例类型表达式?

我想过使用顺序派生列转换,或者创建一个临时查找表,但这看起来确实应该更复杂.

谢谢.

ave*_*sse 15

我使用了相当于if-elseif-else语句来解决问题,如下所示:

(条件1)?(真值1):(条件2)?(真值2):(假值)


Val*_*ken 5

尽管从技术上讲,avesse 的答案会奏效,但编写/维护表达式并不是最有趣的任务。

为了避免在派生列转换中编写复杂的表达式,我建议使用脚本转换。这样做允许您使用 .NET 代码编写switch语句,编写和维护要好得多。你的同事会很感激的!

  • 我不这么认为。您可以根据需要编写和维护复杂的表达式,条件是您应该理解它。如果 ETL 开发人员是 C# 的新手怎么办?我会尽可能避免脚本转换。(只是我的看法)。 (4认同)
  • @Aditya 老实说,我不信任不了解 C#/VB.NET 中基本逻辑表达式的 ETL 开发人员。想象一下,同一个开发人员必须向 .. 中添加第六个条件?.. : .. ? .. : .. ? .. :(等等)表达。这导致错误的可能性很高。但当然每个人都有权发表自己的意见!:) (4认同)