Expressões Integration Services avançadas
Esta seção fornece exemplos de expressões avançadas que combinam múltiplos operadores e funções. Se uma expressão for usada em uma restrição precedente ou na transformação Divisão Condicional, ela deve ser avaliada como uma expressão booliana. Essa restrição, contudo, não se aplica a expressões usadas em expressões de propriedades, variáveis, na transformação Coluna Derivada ou no contêiner Loop For.
O exemplo a seguir usa o banco de dados AdventureWorks2008R2. Cada exemplo identifica as tabelas que usa.
Expressões boolianas
Este exemplo usa a tabela Product. A expressão avalia a entrada do mês na coluna SellStartDate e retorna TRUE quando o mês é junho ou posterior.
DATEPART("mm",SellStartDate) > 6
Este exemplo usa a tabela Product. A expressão avalia o resultado arredondado da divisão da coluna ListPrice pela coluna StandardCost e retorna TRUE quando o resultado é maior que 1,5.
ROUND(ListPrice / StandardCost,2) > 1.50
Este exemplo usa a tabela Product. A expressão retornará TRUE se todas as três operações forem avaliadas como TRUE. Se a coluna Size e a variável BikeSize tiverem tipos de dados incompatíveis, a expressão exigirá uma conversão explícita, conforme mostrado no segundo exemplo. A conversão para DT_WSTR inclui o comprimento da cadeia de caracteres.
MakeFlag == TRUE && FinishedGoodsFlag == TRUE && Size != @BikeSize MakeFlag == TRUE && FinishedGoodsFlag == TRUE && Size != (DT_WSTR,10)@BikeSize
Este exemplo usa a tabela CurrencyRate. A expressão compara valores em tabelas e variáveis. Ele retornará TRUE se as entradas na coluna FromCurrencyCode ou ToCurrencyCode forem iguais aos valores de variável e se o valor em AverageRate for maior que o valor em EndOfDayRate.
(FromCurrencyCode == @FromCur || ToCurrencyCode == @ToCur) && AverageRate > EndOfDayRate
Este exemplo usa a tabela Currency. A expressão retornará TRUE se o primeiro caractere na coluna Name não for a ou A.
SUBSTRING(UPPER(Name),1,1) != "A"
A expressão a seguir fornece os mesmos resultados, mas é mais eficiente porque somente um caractere é convertido em maiúsculas.
UPPER(SUBSTRING(Name,1,1)) != "A"
Expressões não Booleanas
Expressões não Booleanas são usadas na transformação Coluna Derivada, expressões de propriedade e no contêiner Loop For.
Este exemplo usa a tabela Person. A expressão remove os espaços à esquerda e à direita das colunas FirstName, MiddleName e LastName. Ela extrai a primeira letra da coluna MiddleName quando ela não é nula, concatena a inicial do segundo nome e os valores em FirstName e LastName, além de inserir os espaços apropriados entre os valores.
TRIM(FirstName) + " " + (!ISNULL(MiddleName) ? SUBSTRING(MiddleName,1,1) + " " : "") + TRIM(LastName)
Este exemplo usa a tabela Person. A expressão valida entradas na coluna Title. Retorna uma entrada Title ou uma cadeia de caracteres vazia.
(Title == "Sr." || Title == "Ms." || Title == "Sra." || Title == "Mr.") ? Title : ""
Este exemplo usa a tabela Product. A expressão converte o primeiro caractere da coluna Color em maiúscula e converte os caracteres restantes em minúsculas.
UPPER(SUBSTRING(Color,1,1)) + LOWER(SUBSTRING(Color,2,15))
Este exemplo usa a tabela Product. A expressão calculará o número de meses em que um produto foi vendido e retornará a cadeia de caracteres “Desconhecido” se a coluna SellStartDate ou SellEndDate contiver NULL.
!(ISNULL(SellStartDate)) && !(ISNULL(SellEndDate)) ? (DT_WSTR,2)DATEDIFF("mm",SellStartDate,SellEndDate) : "Unknown"
Este exemplo usa a tabela Product. A expressão calcula a marcação na coluna StandardCost e arredonda o resultado para uma precisão de dois. O resultado é apresentado como uma porcentagem.
ROUND(ListPrice / StandardCost,2) * 100
Consulte também