Expresiones avanzadas de Integration Services
Esta sección proporciona ejemplos de expresiones avanzadas que combinan varios operadores y varias funciones. Si se usa una expresión en una restricción de precedencia o en la transformación División condicional, su evaluación debe devolver un valor booleano. Sin embargo, esta restricción no se aplica a las expresiones usadas en expresiones de propiedades, variables, la transformación Columna derivada o el contenedor de bucles For.
Los siguientes ejemplos usan las bases de datos AdventureWorks y AdventureWorksDW de MicrosoftSQL Server. Cada ejemplo identifica las tablas que utiliza.
Expresiones booleanas
En este ejemplo se utiliza la tabla Product. La evaluación de la expresión busca la entrada del mes en la columna SellStartDate y devuelve TRUE si el mes es junio o un mes posterior.
DATEPART("mm",SellStartDate) > 6
En este ejemplo se utiliza la tabla Product. La expresión evalúa el resultado redondeado de dividir la columna ListPrice por la columna StandardCost y devuelve TRUE si el resultado es mayor que 1,5.
ROUND(ListPrice / StandardCost,2) > 1.50
En este ejemplo se utiliza la tabla Product. La expresión devuelve TRUE si las tres operaciones devuelven TRUE. Si la columna Size y la variable BikeSize tienen tipos de datos incompatibles, la expresión requiere una conversión explícita, como se indica en el segundo ejemplo. La conversión a DT_WSTR incluye la longitud de la cadena.
MakeFlag == TRUE && FinishedGoodsFlag == TRUE && Size != @BikeSize MakeFlag == TRUE && FinishedGoodsFlag == TRUE && Size != (DT_WSTR,10)@BikeSize
En este ejemplo se utiliza la tabla CurrencyRate. La expresión compara valores de tablas y variables. Devuelve TRUE si las entradas de la columna FromCurrencyCode o ToCurrencyCode son iguales a los valores de la variable y si el valor de AverageRate es mayor que el valor de EndOfDayRate.
(FromCurrencyCode == @FromCur || ToCurrencyCode == @ToCur) && AverageRate > EndOfDayRate
En este ejemplo se utiliza la tabla Currency. La expresión devuelve TRUE si el primer carácter de la columna Name no es a o A.
SUBSTRING(UPPER(Name),1,1) != "A"
La siguiente expresión proporciona los mismos resultados, pero es mucho más eficaz porque sólo se convierte a mayúsculas un carácter.
UPPER(SUBSTRING(Name,1,1)) != "A"
Expresiones no booleanas
Las expresiones no booleanas se usan en la transformación Columna derivada, en expresiones de propiedades y en el contenedor de bucles For.
En este ejemplo se utiliza la tabla Contact. La expresión quita los espacios iniciales y finales de las columnas FirstName, MiddleName y LastName. Extrae la primera letra de la columna MiddleName si no es NULL, concatena la inicial del segundo nombre y los valores de FirstName y LastName, e inserta los espacios apropiados entre los valores.
TRIM(FirstName) + " " + (!ISNULL(MiddleName) ? SUBSTRING(MiddleName,1,1) + " " : "") + TRIM(LastName)
En este ejemplo se utiliza la tabla Contact. La expresión valida las entradas de la columna Salutation. Devuelve una entrada Salutation o una cadena vacía.
(Salutation == "Sr." || Salutation == "Ms." || Salutation == "Sra." || Salutation == "Mr.") ? Salutation : ""
En este ejemplo se utiliza la tabla Product. La expresión convierte el primer carácter de la columna Color a mayúsculas y convierte los demás caracteres a minúsculas.
UPPER(SUBSTRING(Color,1,1)) + LOWER(SUBSTRING(Color,2,15))
En este ejemplo se utiliza la tabla Product. La expresión calcula el número de meses que se ha vendido un producto y devuelve la cadena "Unknown" si la columna SellStartDate o SellEndDate contiene NULL.
!(ISNULL(SellStartDate)) && !(ISNULL(SellEndDate)) ? (DT_WSTR,2)DATEDIFF("mm",SellStartDate,SellEndDate) : "Unknown"
En este ejemplo se utiliza la tabla Product. La expresión calcula el margen de beneficio de la columna StandardCost y redondea el resultado a una precisión de dos. El resultado se presenta como un porcentaje.
ROUND(ListPrice / StandardCost,2) * 100
Vea también