2009-11-06 11 views
5

Dies ist eine SQL Server Integration Services (SSIS) -Ausdrucksfrage (ich bin ziemlich neu dazu).Wie schreibe ich SSIS switch/case Ausdruck?

Ich möchte einen Schalter/CASE-Ausdruck in einer Transformation der abgeleiteten Spalte schreiben - grundsätzlich kann die neue Spalte 5 verschiedene mögliche Werte haben, basierend auf dem Wert einer Eingabespalte. Alles, was ich von Google bekommen habe, ist die (Bedingung)? (wahrer Wert): (falscher Wert) Technik, aber dies sieht nur zwei mögliche Werte vor. Haben SSIS Ausdrücke einen switch/case Typ Ausdruck?

Ich dachte an die Verwendung sequenzieller abgeleiteter Spaltentransformationen oder das Erstellen einer temporären Nachschlagetabelle, aber das scheint nur komplizierter zu sein als es eigentlich sein sollte.

Danke.

Antwort

13

Ich habe das äquivalent eine if-elseif-else-Anweisung das Problem zu lösen, so benutzt:

(condition1)? (wahrer Wert1): (Bedingung2)? (wahrer Wert2): (falscher Wert)

3

Obwohl, technisch gesehen, die Antwort von avesse funktionieren wird, ist das Schreiben/Aufrechterhalten des Ausdrucks nicht die interessanteste Aufgabe.

Um zu vermeiden, komplexe Ausdrücke in der Transformation der abgeleiteten Spalte zu schreiben, würde ich eine Skriptumwandlung empfehlen. Dadurch können Sie mit .NET-Code eine switch-Anweisung schreiben, die viel besser zu schreiben und zu pflegen ist. Ihre Kollegen werden es zu schätzen wissen!

+2

gestapelt Ich denke nicht. Sie können die Ausdrücke so komplex schreiben und pflegen, wie Sie wollen, Bedingung, Sie sollten es verstehen. Was ist, wenn der ETL-Entwickler ein Neuling für C# ist? Ich würde Skriptumwandlungen so weit wie möglich vermeiden. (Nur meine Sicht). – Aditya

+1

@Aditya Um ehrlich zu sein, würde ich einem ETL-Entwickler nicht vertrauen, der grundlegende logische Ausdrücke in C#/VB.NET nicht versteht. Stellen Sie sich vor, dass der gleiche Entwickler eine sechste Bedingung zum .. hinzufügen muss? ..: ..? ..: ..? ..: (und so weiter) Ausdruck. Die Chancen sind hoch, dies führt zu einem Fehler. Aber natürlich hat jeder Anspruch auf seine eigene Meinung! :) –

2

einfach strukturieren Ihre: Aussagen wie

@[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] 
Verwandte Themen