Ejemplos de expresiones avanzadas de Integration Services
Se aplica a: SQL Server SSIS Integration Runtime en Azure Data Factory
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 de Microsoft SQL Server AdventureWorks y AdventureWorksDW2022
. 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 solo 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, MiddleNamey 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
Related Tasks
Usar una expresión en un componente de flujo de datos
Contenido relacionado
Artículo técnico, sobre la referencia rápida de expresiones de SSIS, en pragmaticworks.com