Compartilhar via


Exemplos de expressões avançadas do Integration Services

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 Booleana. No entanto, essa restrição 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.

Os exemplos a seguir usam os bancos de dados AdventureWorks e AdventureWorksDW2012 Microsoft SQL Server. 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 se o mês for 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 se o resultado for 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 demonstra o 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. Ela retornará TRUE se as entradas nas colunas FromCurrencyCode ou ToCurrencyCode forem iguais a valores variáveis e se o valor em AverageRate for maior do 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 Contato. A expressão remove os espaços à esquerda e à direita das colunas FirstName, MiddleName e LastName. Ela extrai a primeira letra da coluna MiddleName se não for nula, concatena a inicial do segundo nome e os valores em FirstName e LastName e insere os espaços apropriados entre os valores.

    TRIM(FirstName) + " " + (!ISNULL(MiddleName) ? SUBSTRING(MiddleName,1,1) + " " : "") + TRIM(LastName)
    
  • Este exemplo usa a tabela Contato. A expressão valida entradas na coluna Salutation. Retorna uma entrada Salutation ou uma cadeia de caracteres vazia.

    (Salutation == "Sr." || Salutation == "Ms." || Salutation == "Sra." || Salutation == "Mr.") ? Salutation : ""
    
  • Este exemplo usa a tabela Product. A expressão converte o primeiro caractere na 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 calcula o número de meses em que um produto foi vendido e retorna a cadeia de caracteres “Desconhecido” se a coluna SellStartDate ou a coluna 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 a uma precisão de dois. O resultado é apresentado como uma porcentagem.

    ROUND(ListPrice / StandardCost,2) * 100
    

Tarefas relacionadas

Usar uma expressão em um componente de fluxo de dados

Conteúdo relacionado

Artigo técnico, SSIS Expression Cheat Sheet, em pragmaticworks.com

Ícone do Integration Services (pequeno) Fique atualizado com o Integration Services

Para obter os downloads, artigos, exemplos e vídeos da Microsoft mais recentes, bem como soluções selecionadas da comunidade, visite a página do Integration Services no MSDN:


Para receber uma notificação automática dessas atualizações, assine os RSS feeds disponíveis na página.