Partilhar via


Exemplos de expressões avançadas de serviços de integração

Aplica-se a:SQL Server SSIS Integration Runtime em Azure Data Factory

Esta secção fornece exemplos de expressões avançadas que combinam múltiplos operadores e funções. Se uma expressão for usada numa restrição de precedência ou na transformação de Divisão Condicional, ela deve ser avaliada para um Booleano. Essa restrição, no entanto, não se aplica a expressões usadas em expressões de propriedades, variáveis, a transformação Derived Column ou o contentor For Loop.

Os exemplos seguintes utilizam as bases de dados AdventureWorks e AdventureWorksDW2025 Microsoft SQL Server. Cada exemplo identifica as tabelas que utiliza.

Expressões Booleanas

  • Este exemplo utiliza a tabela Produto . A expressão avalia a entrada do mês na coluna SellStartDate e devolve TRUE se o mês for junho ou posterior.

    DATEPART("mm",SellStartDate) > 6  
    
  • Este exemplo utiliza a tabela Produto . A expressão avalia o resultado arredondado de dividir a coluna ListPrice pela coluna StandardCost e devolve TRUE se o resultado for superior a 1,5.

    ROUND(ListPrice / StandardCost,2) > 1.50  
    
  • Este exemplo utiliza a tabela Produto . A expressão retorna TRUE se as três operações avaliarem como TRUE. Se a coluna Tamanho e a variável BikeSize tiverem tipos de dados incompatíveis, a expressão requer um cast explícito, como mostrado no segundo exemplo. A conversão para DT_WSTR inclui o comprimento da string.

    MakeFlag ==  TRUE && FinishedGoodsFlag == TRUE && Size != @BikeSize  
    MakeFlag ==  TRUE && FinishedGoodsFlag == TRUE  && Size != (DT_WSTR,10)@BikeSize  
    
  • Este exemplo utiliza a tabela CurrencyRate . A expressão compara valores em tabelas e variáveis. Devolve TRUE se as entradas nas colunas FromCurrencyCode ou ToCurrencyCode forem iguais a valores variáveis e se o valor em AverageRate for superior ao valor em EndOfDayRate.

    (FromCurrencyCode == @FromCur || ToCurrencyCode == @ToCur) && AverageRate > EndOfDayRate  
    
  • Este exemplo utiliza a tabela de Moedas . A expressão retorna TRUE se o primeiro carácter na coluna Nome não for a nem A.

    SUBSTRING(UPPER(Name),1,1) != "A"  
    

    A expressão seguinte fornece os mesmos resultados, mas é mais eficiente porque apenas um carácter é 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 Derived Column, expressões de propriedades e no contentor For Loop.

  • Este exemplo utiliza a tabela de contactos . A expressão remove os espaços iniciais e finais das colunas NomePróprio, Nome do Meio e ÚltimoNome. Extrai a primeira letra da coluna Nome do Meio se não for nula, concatena a inicial do meio e os valores em Primeiro Nome e Apelido, e insere espaços apropriados entre os valores.

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

    (Salutation == "Sr." || Salutation == "Ms." || Salutation == "Sra." || Salutation == "Mr.") ? Salutation : ""  
    
  • Este exemplo utiliza a tabela Produto . A expressão converte o primeiro carácter da coluna Cor em maiúsculas e converte os caracteres restantes em minúsculas.

    UPPER(SUBSTRING(Color,1,1)) + LOWER(SUBSTRING(Color,2,15))  
    
  • Este exemplo utiliza a tabela Produto . A expressão calcula o número de meses em que um produto foi vendido e devolve a cadeia "Desconhecido" se a coluna SellStartDate ou SellEndDate contiver NULL.

    !(ISNULL(SellStartDate)) && !(ISNULL(SellEndDate)) ? (DT_WSTR,2)DATEDIFF("mm",SellStartDate,SellEndDate) : "Unknown"  
    
  • Este exemplo utiliza a tabela Produto . A expressão calcula a marcação na coluna StandardCost e arredonda o resultado para uma precisão de dois. O resultado é apresentado em percentagem.

    ROUND(ListPrice / StandardCost,2) * 100  
    

Usar uma expressão num componente de fluxo de dados

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