Esempi di espressioni avanzate di Integration ServicesExamples of Advanced Integration Services Expressions

In questa sezione vengono forniti esempi di alcune funzioni avanzate, in cui sono combinati più operatori e funzioni.This section provides examples of advanced expressions that combine multiple operators and functions. Le espressioni utilizzate nei vincoli di precedenza o nella trasformazione Suddivisione condizionale devono restituire un valore booleano.If an expression is used in a precedence constraint or the Conditional Split transformation, it must evaluate to a Boolean. Tale restrizione non si applica tuttavia alle espressioni utilizzate in espressioni di proprietà e variabili, nella trasformazione Colonna derivata o nel contenitore Ciclo For.That restriction, however, does not apply to expressions used in property expressions, variables, the Derived Column transformation, or the For Loop container.

Gli esempi seguenti usano i database AdventureWorks e AdventureWorksDW2012AdventureWorksDW2012 MicrosoftMicrosoft SQL ServerSQL Server .The following examples use the AdventureWorks and the AdventureWorksDW2012AdventureWorksDW2012 MicrosoftMicrosoft SQL ServerSQL Server databases. Per ogni esempio viene indicata la tabella utilizzata.Each example identifies the tables it uses.

Espressioni booleaneBoolean Expressions

  • Questo esempio usa la tabella Product .This example uses the Product table. L'espressione valuta la voce del mese nella colonna SellStartDate e restituisce TRUE se il mese è giugno o uno successivo.The expression evaluates the month entry in the SellStartDate column and returns TRUE if the month is June or later.

    DATEPART("mm",SellStartDate) > 6  
    
  • Questo esempio usa la tabella Product .This example uses the Product table. 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.The expression evaluates the rounded result of dividing the ListPrice column by the StandardCost column, and returns TRUE if the result is greater than 1.5.

    ROUND(ListPrice / StandardCost,2) > 1.50  
    
  • Questo esempio usa la tabella Product .This example uses the Product table. L'espressione restituisce TRUE se tutte e tre le operazioni restituiscono TRUE.The expression returns TRUE if all three operations evaluate to 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.If the Size column and the BikeSize variable have incompatible data types, the expression requires an explicit cast as shown the second example. Il cast a DT_WSTR include la lunghezza della stringa.The cast to DT_WSTR includes the length of the string.

    MakeFlag ==  TRUE && FinishedGoodsFlag == TRUE && Size != @BikeSize  
    MakeFlag ==  TRUE && FinishedGoodsFlag == TRUE  && Size != (DT_WSTR,10)@BikeSize  
    
  • Questo esempio usa la tabella CurrencyRate .This example uses the CurrencyRate table. L'espressione confronta valori in tabelle e variabili.The expression compares values in tables and variables. 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.It returns TRUE if entries in the FromCurrencyCode or ToCurrencyCode columns are equal to variable values and if the value in AverageRate is greater that the value in EndOfDayRate.

    (FromCurrencyCode == @FromCur || ToCurrencyCode == @ToCur) && AverageRate > EndOfDayRate  
    
  • Questo esempio usa la tabella Currency .This example uses the Currency table. L'espressione restituisce TRUE se il primo carattere nella colonna Name non è a o A.The expression returns TRUE if the first character in the Name column is not a or 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.The following expression provides the same results, but it is more efficient because only one character is converted to uppercase.

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

Espressioni non booleaneNon-Boolean Expressions

Le espressioni non booleane vengono utilizzate nella trasformazione Colonna derivata, nelle espressioni di proprietà e nel contenitore Ciclo For.Non-Boolean expressions are used in the Derived Column transformation, property expressions, and the For Loop container.

  • Questo esempio usa la tabella Contact .This example uses the Contact table. L'espressione rimuove gli spazi iniziali e finali dalle colonne FirstName, MiddleNamee LastName .The expression removes leading and trailing spaces from the FirstName, MiddleName, and LastName columns. 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.It extracts the first letter of the MiddleName column if it is not null, concatenates the middle initial and the values in FirstName and LastName, and inserts appropriate spaces between values.

    TRIM(FirstName) + " " + (!ISNULL(MiddleName) ? SUBSTRING(MiddleName,1,1) + " " : "") + TRIM(LastName)  
    
  • Questo esempio usa la tabella Contact .This example uses the Contact table. L'espressione convalida le voci nella colonna Salutation .The expression validates entries in the Salutation column. Restituisce una voce di Salutation o una stringa vuota.It returns a Salutation entry or an empty string.

    (Salutation == "Sr." || Salutation == "Ms." || Salutation == "Sra." || Salutation == "Mr.") ? Salutation : ""  
    
  • Questo esempio usa la tabella Product .This example uses the Product table. L'espressione converte in maiuscolo il primo carattere nella colonna Color e in minuscolo i caratteri rimanenti.The expression converts the first character in the Color column to uppercase and converts remaining characters to lowercase.

    UPPER(SUBSTRING(Color,1,1)) + LOWER(SUBSTRING(Color,2,15))  
    
  • Questo esempio usa la tabella Product .This example uses the Product table. 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.The expression calculates the number of months a product has been sold and returns the string "Unknown" if either the SellStartDate or the SellEndDate column contains NULL.

    !(ISNULL(SellStartDate)) && !(ISNULL(SellEndDate)) ? (DT_WSTR,2)DATEDIFF("mm",SellStartDate,SellEndDate) : "Unknown"  
    
  • Questo esempio usa la tabella Product .This example uses the Product table. L'espressione calcola il margine di profitto sulla colonna StandardCost e arrotonda il risultato alla precisione 2.The expression calculates the markup on the StandardCost column and rounds the result to a precision of two. Il risultato viene presentato come percentuale.The result is presented as a percentage.

    ROUND(ListPrice / StandardCost,2) * 100  
    

Utilizzo di un'espressione in un componente flusso di datiUse an Expression in a Data Flow Component

Articolo tecnico relativo al foglio d'aiuto per le espressioni SSISsul sito Web pragmaticworks.comTechnical article, SSIS Expression Cheat Sheet, on pragmaticworks.com