2009-11-06 14 views
5

これはSQL Server Integration Services(SSIS)式の質問です(これはかなり新しいです)。SSISスイッチ/ケース式の記述方法は?

派生列変換でスイッチ/ケース式を記述したいと思います。基本的に、新しい列は入力列の値に基づいて5つの異なる値を持つことができます。私がGoogleから得たものはすべて(条件)ですか? (真値):(偽値)法ですが、これは2つの可能な値しか提供しません。 SSIS式にはスイッチ/ケース式の式がありますか?

私はシーケンシャルな派生列変換を使用したり、一時的なルックアップテーブルを作成することを考えましたが、実際にはもっと複雑に思えます。

ありがとうございました。

答えて

13

私はこのように、問題を解決するためのif-elseifを-else文の同等のものを使用しています

(条件1)? (真値1):(条件2)? (真の値2):(偽の値)

3

技術的には、avesseの回答が機能しますが、表現の作成/維持は最も面白い作業ではありません。

派生列変換で複雑な式を書き込まないようにするには、スクリプト変換を使用することをお勧めします。そうすることで、.NETコードを使用してswitchという文を書くことができます。あなたの同僚はそれを感謝します! ?

+2

などのステートメントは、私はそうは思いません。あなたは書くことができます&あなたがそれを理解する必要があります条件、あなたが望むほど複雑な表現を維持する。 ETL開発者がC#の初心者であればどうでしょうか?私は可能な限りスクリプトの変換を避けるでしょう。 (ちょうど私の見解)。 – Aditya

+1

@Aditya正直言って、私はC#/ VB.NETの基本的な論理式を理解していないETL開発者を信頼しません。同じ開発者が..に6番目の条件を追加しなければならないと想像してください。 ..:..? ..:..? ..:(など)式。チャンスが上がるとバグが発生します。しかし、誰もがもちろん自分の意見を持っている! :) –

2

単にあなたを構造化:スタック

@[User::SomeVariable] == 2 ? "SomeVariable is 2" 
: 
@[User::SomeVariable] == 3 ? "SomeVariable is 3" 
: 
@[User::SomeVariable] == 4 ? "SomeVariable is 4" 
: 
"SomeVariable is not 2,3,4 is actually" + @[User::SomeVariable] 
関連する問題