Esempi di espressioni avanzate di Integration Services

Si applica a:SQL Server SSIS Integration Runtime in Azure Data Factory

In questa sezione vengono forniti esempi di alcune funzioni avanzate, in cui sono combinati più operatori e funzioni. Le espressioni utilizzate nei vincoli di precedenza o nella trasformazione Suddivisione condizionale devono restituire un valore booleano. Tale restrizione non si applica tuttavia alle espressioni utilizzate in espressioni di proprietà e variabili, nella trasformazione Colonna derivata o nel contenitore Ciclo For.

Negli esempi seguenti vengono utilizzati i AdventureWorksDW2022 database di Microsoft SQL Server e AdventureWorks. Per ogni esempio viene indicata la tabella utilizzata.

Espressioni booleane

  • Questo esempio usa la tabella Product . L'espressione valuta la voce del mese nella colonna SellStartDate e restituisce TRUE se il mese è giugno o uno successivo.

    DATEPART("mm",SellStartDate) > 6  
    
  • Questo esempio usa la tabella Product . L'espressione valuta il risultato arrotondato della divisione della colonna ListPrice per la colonna StandardCost e restituisce TRUE se questo risultato è maggiore di 1,5.

    ROUND(ListPrice / StandardCost,2) > 1.50  
    
  • Questo esempio usa la tabella Product . L'espressione restituisce TRUE se tutte e tre le operazioni restituiscono TRUE. Se la colonna Size e la variabile BikeSize hanno tipi di dati incompatibili, l'espressione richiederà un cast esplicito, come mostrato nel secondo esempio. Il cast a DT_WSTR include la lunghezza della stringa.

    MakeFlag ==  TRUE && FinishedGoodsFlag == TRUE && Size != @BikeSize  
    MakeFlag ==  TRUE && FinishedGoodsFlag == TRUE  && Size != (DT_WSTR,10)@BikeSize  
    
  • Questo esempio usa la tabella CurrencyRate . L'espressione confronta valori in tabelle e variabili. Restituisce TRUE se la voce nella colonna FromCurrencyCode o ToCurrencyCode è uguale al valore della variabile e se il valore in AverageRate è maggiore del valore in EndOfDayRate.

    (FromCurrencyCode == @FromCur || ToCurrencyCode == @ToCur) && AverageRate > EndOfDayRate  
    
  • Questo esempio usa la tabella Currency . L'espressione restituisce TRUE se il primo carattere nella colonna Name non è a o A.

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

    L'espressione seguente restituisce gli stessi risultati ma è più efficiente, perché viene convertito in maiuscolo un solo carattere.

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

Espressioni non booleane

Le espressioni non booleane vengono utilizzate nella trasformazione Colonna derivata, nelle espressioni di proprietà e nel contenitore Ciclo For.

  • Questo esempio usa la tabella Contact . L'espressione rimuove gli spazi iniziali e finali dalle colonne FirstName, MiddleNamee LastName . Estrae la prima lettera della colonna MiddleName se non è Null, concatena l'iniziale del secondo nome e i valori in FirstName e LastNamee inserisce gli spazi appropriati tra i valori.

    TRIM(FirstName) + " " + (!ISNULL(MiddleName) ? SUBSTRING(MiddleName,1,1) + " " : "") + TRIM(LastName)  
    
  • Questo esempio usa la tabella Contact . L'espressione convalida le voci nella colonna Salutation . Restituisce una voce di Salutation o una stringa vuota.

    (Salutation == "Sr." || Salutation == "Ms." || Salutation == "Sra." || Salutation == "Mr.") ? Salutation : ""  
    
  • Questo esempio usa la tabella Product . L'espressione converte in maiuscolo il primo carattere nella colonna Color e in minuscolo i caratteri rimanenti.

    UPPER(SUBSTRING(Color,1,1)) + LOWER(SUBSTRING(Color,2,15))  
    
  • Questo esempio usa la tabella Product . L'espressione calcola il numero dei mesi per cui un determinato prodotto è stato venduto e restituisce la stringa "Unknown" se la colonna SellStartDate o SellEndDate contiene NULL.

    !(ISNULL(SellStartDate)) && !(ISNULL(SellEndDate)) ? (DT_WSTR,2)DATEDIFF("mm",SellStartDate,SellEndDate) : "Unknown"  
    
  • Questo esempio usa la tabella Product . L'espressione calcola il margine di profitto sulla colonna StandardCost e arrotonda il risultato alla precisione 2. Il risultato viene presentato come percentuale.

    ROUND(ListPrice / StandardCost,2) * 100  
    

Usare un'espressione in un componente flusso di dati

Articolo tecnico relativo al foglio d'aiuto per le espressioni SSISsul sito Web pragmaticworks.com