7
votes

Comment écrire un ssioteur / expression de cas?

Il s'agit d'une question d'expressions SQL Server Integration Services (SSIS) (je suis assez nouvelle).

Je voudrais écrire une expression de commutation / cas dans une transformation de colonne dérivée - essentiellement, la nouvelle colonne peut avoir 5 valeurs différentes possibles, en fonction de la valeur d'une colonne d'entrée. Tout ce que j'ai reçu de Google est la (condition)? (Valeur vraie): technique (valeur de valeur), mais cela ne prévoit que deux valeurs possibles. Les expressions SSIS ont-elles une expression de type commutateur / de cas?

J'ai pensé à utiliser une colonne dérivée séquentielle, ou crée une table de recherche temporaire, mais cela semble plus compliqué que cela devrait vraiment être.

Merci.


0 commentaires

3 Réponses :


15
votes

J'ai utilisé l'équivalent d'une déclaration if-elsesif-d'autre pour résoudre le problème, comme celui-ci:

(condition1)? (vraie valeur1): (condition2)? (vraie valeur2): (valeur de valeur)


0 commentaires

5
votes

Même si, techniquement, la réponse de Avese fonctionnera, écrivant / maintenir l'expression n'est pas la tâche la plus intéressante.

Pour éviter d'écrire des expressions complexes dans la transformation de la colonne dérivée, je recommanderais d'utiliser une transformation de script. Cela vous permet d'utiliser le code .NET pour écrire un Switch déclaration, beaucoup plus agréable à écrire et à entretenir. Vos collègues apprécieront cela!


2 commentaires

Je ne le pense pas. Vous pouvez écrire et maintenir les expressions aussi complexes que vous le souhaitez, condition, vous devez le comprendre. Et si le développeur ETL est un débutant à C #? J'éviterais autant que possible les transformations de script. (Juste ma vue).


@Aditya Pour être honnête, je ne ferais pas confiance à un développeur ETL qui ne comprend pas les expressions de base de la logique de base en C # / vb.net. Imaginez que le même développeur doit ajouter une sixième condition à la ..? ..: ..? ..: ..? ..: (et ainsi de suite) expression. Les chances sont élevées, cela entraîne un bug. Mais tout le monde a droit à sa propre opinion bien sûr! :)



3
votes

Simplement structurer votre ?: Les déclarations comme empilées

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


0 commentaires