Esempi di espressioni avanzate di Integration Services

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 il database AdventureWorks e il database AdventureWorksDW2012 di Microsoft SQL Server. Per ogni esempio viene indicata la tabella utilizzata.

Espressioni booleane

  • In questo esempio viene utilizzata la tabella Product. L'espressione valuta la voce del mese nella colonna SellStartDate e restituisce TRUE se il mese è giugno o un mese successivo.

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

    ROUND(ListPrice / StandardCost,2) > 1.50
    
  • In questo esempio viene utilizzata 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
    
  • In questo esempio viene utilizzata 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 corrispondente e se il valore in AverageRate è maggiore di quello in EndOfDayRate.

    (FromCurrencyCode == @FromCur || ToCurrencyCode == @ToCur) && AverageRate > EndOfDayRate
    
  • In questo esempio viene utilizzata 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.

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

    TRIM(FirstName) + " " + (!ISNULL(MiddleName) ? SUBSTRING(MiddleName,1,1) + " " : "") + TRIM(LastName)
    
  • In questo esempio viene utilizzata 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 : ""
    
  • In questo esempio viene utilizzata 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))
    
  • In questo esempio viene utilizzata la tabella Product. L'espressione calcola il numero dei mesi per cui un determinato prodotto è rimasto in vendita e restituisce la stringa "Unknown" se la colonna SellStartDate o la colonna SellEndDate contiene NULL.

    !(ISNULL(SellStartDate)) && !(ISNULL(SellEndDate)) ? (DT_WSTR,2)DATEDIFF("mm",SellStartDate,SellEndDate) : "Unknown"
    
  • In questo esempio viene utilizzata 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
    

Attività correlate

Utilizzo di un'espressione in un componente flusso di dati

Contenuto correlato

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

Icona di Integration Services (piccola) Rimanere aggiornati con Integration Services

Per informazioni sui download, gli articoli, gli esempi e i video Microsoft più recenti, nonché sulle soluzioni selezionate dalla community, visitare la pagina Integration Services su MSDN:


Per ricevere notifica automatica su questi aggiornamenti, sottoscrivere i feed RSS disponibili nella pagina.