Ordinamento dei dati per le trasformazioni Unione e Merge JoinSort Data for the Merge and Merge Join Transformations

In Integration ServicesIntegration Services le trasformazioni Unione e Merge Join richiedono dati di input ordinati.In Integration ServicesIntegration Services, the Merge and Merge Join transformations require sorted data for their inputs. I dati di input devono essere ordinati fisicamente ed è necessario impostare le opzioni di ordinamento sugli output e sulle colonne di output nell'origine o nella trasformazione a monte.The input data must be sorted physically, and sort options must be set on the outputs and the output columns in the source or in the upstream transformation. Se le opzioni di ordinamento indicano che i dati sono ordinati, mentre in realtà non lo sono, l'operazione di Unione o Merge join restituisce risultati imprevisti.If the sort options indicate that the data is sorted, but the data is not actually sorted, the results of the merge or merge join operation are unpredictable.

Ordinamento dei datiSorting the Data

È possibile ordinare i dati mediante uno dei seguenti metodi:You can sort this data by using one of the following methods:

  • Utilizzare nell'origine una clausola ORDER BY nell'istruzione utilizzata per caricare i dati.In the source, use an ORDER BY clause in the statement that is used to load the data.

  • Inserire nel flusso di dati una trasformazione Ordinamento prima della trasformazione Unione o Merge join.In the data flow, insert a Sort transformation before the Merge or Merge Join transformation.

    Se i dati sono di tipo stringa, le trasformazioni Unione e Merge join presuppongono che i valori stringa siano stati ordinati mediante le regole di confronto di Windows.If the data is string data, both the Merge and Merge Join transformations expect the string values to have been sorted by using Windows collation. Per fornire i valori stringa alle trasformazioni Unione e Merge join ordinate mediante le regole di confronto di Windows, utilizzare la procedura seguente:To provide string values to the Merge and Merge Join transformations that are sorted by using Windows collation, use the following procedure.

Per fornire valori stringa ordinati tramite regole di confronto di WindowsTo provide string values that are sorted by using Windows collation

  • Utilizzare una trasformazione Ordinamento per ordinare i dati.Use a Sort transformation to sort the data.

    La trasformazione Ordinamento utilizza le regole di confronto di Windows per ordinare i valori stringa.The Sort transformation uses Windows collation to sort string values.

    -oppure-—or—

  • Usare l'operatore CAST Transact-SQL per eseguire innanzitutto il cast dei valori varchar in valori nvarchar e quindi usare la clausola ORDER BY Transact-SQL per ordinare i dati.Use the Transact-SQL CAST operator to first cast varchar values to nvarchar values, and then use the Transact-SQL ORDER BY clause to sort the data.

    Importante

    Non è possibile utilizzare solo la clausola ORDER BY perché tale clausola utilizza le regole di confronto di SQL ServerSQL Server per ordinare i valori stringa.You cannot use the ORDER BY clause alone because the ORDER BY clause uses a SQL ServerSQL Server collation to sort string values. L'uso delle regole di confronto di SQL ServerSQL Server può restituire un ordinamento diverso rispetto alle regole di confronto di Windows, con risultati imprevisti nella trasformazione Unione o Merge join.The use of the SQL ServerSQL Server collation might result in a different sort order than Windows collation, which can cause the Merge or Merge Join transformation to produce unexpected results.

Impostazione delle opzioni di ordinamento nei datiSetting Sort Options on the Data

È necessario impostare due importanti proprietà di ordinamento per l'origine o per la trasformazione a monte che fornisce i dati alle trasformazioni Unione e Merge join:There are two important sort properties that must be set for the source or upstream transformation that supplies data to the Merge and Merge Join transformations:

  • La proprietà IsSorted dell'output che indica se i dati sono stati ordinati.The IsSorted property of the output that indicates whether the data has been sorted. Questa proprietà deve essere impostata su True.This property must be set to True.

    Importante

    L'impostazione del valore della proprietà IsSorted su True non determina l'ordinamento dei dati.Setting the value of the IsSorted property to True does not sort the data. Questa proprietà fornisce solo un hint ai componenti a valle in relazione all'ordinamento precedente dei dati.This property only provides a hint to downstream components that the data has been previously sorted.

  • La proprietà SortKeyPosition delle colonne di output che indica se una colonna è ordinata, l'ordinamento della colonna e la sequenza di ordinamento di più colonne.The SortKeyPosition property of output columns that indicates whether a column is sorted, the column's sort order, and the sequence in which multiple columns are sorted. Questa proprietà deve essere impostata per ogni colonna di dati ordinati.This property must be set for each column of sorted data.

    Se si utilizza una trasformazione Ordinamento per ordinare i dati, entrambe le proprietà vengono impostate come richiesto dalla trasformazione Unione o Merge join,If you use a Sort transformation to sort the data, the Sort transformation sets both of these properties as required by the Merge or Merge Join transformation. ovvero, la trasformazione Ordinamento imposta la proprietà IsSorted dell'output su Truee le proprietà SortKeyPosition delle colonne di output.That is, the Sort transformation sets the IsSorted property of its output to True, and sets the SortKeyPosition properties of its output columns.

    Tuttavia, se non si utilizza una trasformazione Ordinamento per ordinare i dati, è necessario impostare manualmente queste proprietà di ordinamento nell'origine o nella trasformazione a monte.However, if you do not use a Sort transformation to sort the data, you must set these sort properties manually on the source or the upstream transformation. Per impostare manualmente le proprietà di ordinamento nell'origine o nella trasformazione a monte, utilizzare la procedura seguente.To manually set the sort properties on the source or upstream transformation, use the following procedure.

Per impostare manualmente gli attributi di ordinamento in un componente dell'origine o della trasformazioneTo manually set sort attributes on a source or transformation component

  1. In SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT)aprire il progetto di Integration ServicesIntegration Services contenente il pacchetto desiderato.In SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT), open the Integration ServicesIntegration Services project that contains the package you want.

  2. In Esplora soluzioni fare doppio clic sul pacchetto per aprirlo.In Solution Explorer, double-click the package to open it.

  3. Nella scheda Flusso di dati individuare l'origine o la trasformazione a monte appropriata o trascinarla dalla Casella degli strumenti nell'area di progettazione.On the Data Flow tab, locate the appropriate source or upstream transformation, or drag it from the Toolbox to the design surface.

  4. Fare clic sul componente con il pulsante destro del mouse e scegliere Visualizza editor avanzato.Right-click the component and click Show Advanced Editor.

  5. Fare clic sulla scheda Proprietà input e output .Click the Input and Output Properties tab.

  6. Fare clic su <nome componente > Outpute impostare il IsSorted proprietà True.Click <component name> Output, and set the IsSorted property to True.

    Nota

    Se si imposta manualmente la proprietà IsSorted dell'output su True e se i dati non sono ordinati, quando si esegue il pacchetto alcuni dati potrebbero risultare mancanti o danneggiati nella trasformazione Unione o Merge Join.If you manually set the IsSorted property of the output to True and the data is not sorted, there might be missing data or bad data comparisons in the downstream Merge or Merge Join transformation when you run the package.

  7. Espandere Colonne di output.Expand Output Columns.

  8. Fare clic sulla colonna che si vuole indicare come ordinata e impostarne la proprietà SortKeyPosition su un valore intero diverso da zero attenendosi alle linee guida seguenti:Click the column that you want to indicate is sorted and set its SortKeyPosition property to a nonzero integer value by following these guidelines:

    • Il valore intero deve rappresentare una sequenza numerica che inizia con 1 e che ha incrementi di 1.The integer value must represent a numeric sequence, starting with 1 and incremented by 1.

    • Un valore intero positivo indica un ordinamento crescente.A positive integer value indicates an ascending sort order.

    • Un valore intero negativo indica un ordinamento decrescente.A negative integer value indicates a descending sort order. Se impostato su un numero negativo, il valore assoluto del numero determina la posizione della colonna nella sequenza di ordinamento.(If set to a negative number, the absolute value of the number determines the column's position in the sort sequence.)

    • Il valore predefinito 0 indica che la colonna non è ordinata.The default value of 0 indicates that the column is not sorted. Lasciare il valore 0 per colonne di output che non vengono incluse nell'ordinamento.Leave the value of 0 for output columns that do not participate in the sort.

      Come esempio per l'impostazione della proprietà SortKeyPosition , considerare l'istruzione Transact-SQL seguente che carica i dati in un'origine:As an example of how to set the SortKeyPosition property, consider the following Transact-SQL statement that loads data in a source:

      SELECT * FROM MyTable ORDER BY ColumnA, ColumnB DESC, ColumnC

      Per questa istruzione, impostare la proprietà SortKeyPosition per ogni colonna come indicato di seguito:For this statement, you would set the SortKeyPosition property for each column as follows:

    • Impostare la proprietà SortKeyPosition di ColumnA su 1.Set the SortKeyPosition property of ColumnA to 1. In questo modo viene indicato che ColumnA è la prima colonna da ordinare e che l'ordinamento deve essere crescente.This indicates that ColumnA is the first column to be sorted and is sorted in ascending order.

    • Impostare la proprietà SortKeyPosition di ColumnB su -2.Set the SortKeyPosition property of ColumnB to -2. In questo modo viene indicato che ColumnB è la seconda colonna da ordinare e che l'ordinamento deve essere decrescente.This indicates that ColumnB is the second column to be sorted and is sorted in descending order

    • Impostare la proprietà SortKeyPosition di ColumnC su 3.Set the SortKeyPosition property of ColumnC to 3. In questo modo viene indicato che ColumnC è la terza colonna da ordinare e che l'ordinamento deve essere crescente.This indicates that ColumnC is the third column to be sorted and is sorted in ascending order.

  9. Ripetere il passaggio 8 per ogni colonna ordinata.Repeat step 8 for each sorted column.

  10. Scegliere OK.Click OK.

  11. Per salvare il pacchetto aggiornato, scegliere Salva elementi selezionati dal menu File .To save the updated package, click Save Selected Items on the File menu.

Vedere ancheSee Also

Trasformazione unione Merge Transformation
Trasformazione Merge Join Merge Join Transformation
Trasformazioni di Integration Services Integration Services Transformations
Percorsi in Integration Services Integration Services Paths
Attività flusso di datiData Flow Task