2009-11-06 38 views
5

Esta es una pregunta de expresiones de SQL Server Integration Services (SSIS) (soy bastante nuevo).Cómo escribir el interruptor de SSIS/expresión de caso?

Me gustaría escribir una expresión de interruptor/caja en una transformación de columna derivada; básicamente, la nueva columna puede tener 5 valores posibles diferentes, en función del valor de una columna de entrada. Todo lo que obtuve de Google es la (condición)? (valor verdadero): técnica (valor falso), pero esto solo proporciona dos valores posibles. ¿Las expresiones de SSIS tienen una expresión de tipo switch/case?

Pensé en usar transformaciones de columna derivadas secuenciales o crear una tabla de búsqueda temporal, pero eso parece más complicado de lo que realmente debería ser.

Gracias.

Respuesta

13

he utilizado el equivalente de una sentencia if-elseif-else para resolver el problema, de esta manera:

(condición1)? (true value1): (condition2)? (verdadero valor2): (valor falso)

3

Aunque, técnicamente, la respuesta de avesse funcionará, escribir/mantener la expresión no es la tarea más interesante.

Para evitar escribir expresiones complejas en la transformación de columna derivada, recomendaría utilizar una transformación de scripts. Hacer eso le permite usar el código .NET para escribir una declaración switch, mucho mejor para escribir y mantener. ¡Tus colegas lo apreciarán!

+2

Yo no lo creo. Puedes escribir y mantener las expresiones tan complejas como quieras, condición, debes entenderlas. ¿Qué sucede si el desarrollador de ETL es un novato en C#? Evitaría las transformaciones de scripts tanto como sea posible. (Solo mi vista). – Aditya

+1

@Aditya Para ser honesto, no confiaría en un desarrollador de ETL que no comprenda las expresiones lógicas básicas en C#/VB.NET. ¿Imagine que el mismo desarrollador tiene que agregar una sexta condición al ...? ..: ..? ..: ..? ..: (y así sucesivamente) expresión. Las posibilidades son altas, esto resulta en un error. ¡Pero todos tienen derecho a su propia opinión, por supuesto! :) –

2

Simplemente estructurar sus declaraciones:? Como apilados

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