Pivot - trasformazionePivot Transformation

La trasformazione Pivot consente di convertire un set di dati normalizzato in una versione meno normalizzata ma più compatta, trasformando i dati di input tramite Pivot in base a un valore di colonna.The Pivot transformation makes a normalized data set into a less normalized but more compact version by pivoting the input data on a column value. Un set di dati normalizzato di nome Orders che elenca nomi di clienti, prodotti e quantità vendute, ad esempio, include in genere più righe per ogni cliente che ha acquistato più prodotti, indicando su ogni riga i dettagli dell'ordine di un prodotto specifico.For example, a normalized Orders data set that lists customer name, product, and quantity purchased typically has multiple rows for any customer who purchased multiple products, with each row for that customer showing order details for a different product. Trasformando il set di dati tramite Pivot in base alla colonna dei prodotti, la trasformazione Pivot può restituire in output un set di dati con una singola riga per cliente,By pivoting the data set on the product column, the Pivot transformation can output a data set with a single row per customer. nella quale sono elencati tutti gli acquisti effettuati dal cliente, utilizzando i nomi dei prodotti come nomi delle colonne e visualizzando le quantità come valori nelle colonne dei prodotti.That single row lists all the purchases by the customer, with the product names shown as column names, and the quantity shown as a value in the product column. Poiché non tutti i clienti acquistano tutti i prodotti, molte colonne possono contenere valori Null.Because not every customer purchases every product, many columns may contain null values.

Quando si trasforma un set di dati tramite Pivot, le colonne di input svolgono ruoli diversi nel processo.When a dataset is pivoted, input columns perform different roles in the pivoting process. Una colonna può partecipare nei modi seguenti:A column can participate in the following ways:

  • La colonna viene passata all'output invariata.The column is passed through unchanged to the output. Poiché più righe di input possono convergere in una sola riga di output, la trasformazione copia solo il primo valore di input per la colonna.Because many input rows can result only in one output row, the transformation copies only the first input value for the column.

  • La colonna viene utilizzata come chiave, o parte di una chiave, che identifica un set di record.The column acts as the key or part of the key that identifies a set of records.

  • La colonna definisce il pivot.The column defines the pivot. I valori nella colonna vengono associati alle colonne del set di dati trasformato tramite Pivot.The values in this column are associated with columns in the pivoted dataset.

  • La colonna contiene valori che vengono inseriti nelle colonne create dalla trasformazione Pivot.The column contains values that are placed in the columns that the pivot creates.

    Questa trasformazione include un input, un output regolare e un output degli errori.This transformation has one input, one regular output, and one error output.

Ordinare e duplicare le righeSort and Duplicate Rows

Per trasformare efficientemente i dati tramite Pivot, ovvero creare il minor numero di record possibile nel set di dati di output, i dati di input devono essere ordinati in base alla colonna pivot.To pivot data efficiently, which means creating as few records in the output dataset as possible, the input data must be sorted on the pivot column. Se i dati non sono ordinati, la trasformazione Pivot potrà generare più record per ogni valore nella chiave del set, che è la colonna che definisce l'appartenenza al set.If the data is not sorted, the Pivot transformation might generate multiple records for each value in the set key, which is the column that defines set membership. Se un set di dati viene trasformato tramite Pivot in base a una colonna Name , ad esempio, ma i nomi non sono ordinati, nel set di dati di output potranno essere incluse più righe per ogni cliente, perché viene eseguita un'operazione pivot ogni volta che cambia il valore in Name .For example, if a dataset is pivoted on a Name column but the names are not sorted, the output dataset could have more than one row for each customer, because a pivot occurs every time that the value in Name changes.

I dati di input potrebbero contenere righe duplicate, provocando l'errore della trasformazione Pivot.The input data might contain duplicate rows, which will cause the Pivot transformation to fail. Per righe duplicate si intendono righe che contengono gli stessi valori nelle colonne chiave del set e nelle colonne pivot."Duplicate rows" means rows that have the same values in the set key columns and the pivot columns. Per evitare l'errore è possibile configurare la trasformazione in modo che le righe con esito negativo vengano reindirizzate a un output degli errori, oppure preaggregare i valori per assicurarsi che non siano presenti righe duplicate.To avoid failure, you can either configure the transformation to redirect error rows to an error output or you can pre-aggregate values to ensure there are no duplicate rows.

Opzioni della finestra di dialogo Pivot Options in the Pivot Dialog Box

L'operazione pivot può essere configurata impostando le opzioni nella finestra di dialogo Pivot .You configure the pivot operation by setting the options in the Pivot dialog box. Per aprire la finestra di dialogo Pivot , aggiungere la trasformazione Pivot al pacchetto in SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT)e quindi fare clic con il pulsante destro del mouse sul componente e scegliere Modifica.To open the Pivot dialog box, add the Pivot transformation to the package in SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT), and then right-click the component and click Edit.

L'elenco seguente descrive le opzioni nella finestra di dialogo Pivot .The following list describes the options in the Pivot dialog box.

Chiave pivotPivot Key
Viene specificata la colonna da utilizzare per i valori nella riga superiore (riga di intestazione) della tabella.Specifies the column to use for values across the top row (header row) of the table.

Chiave setSet Key
Viene specificata la colonna da utilizzare per i valori nella colonna sinistra della tabella.Specifies the column to use for values in the left column of the table. È necessario ordinare la data di input in questa colonna.The input date must be sorted on this column.

Valore pivotPivot Value
Viene specificata la colonna da utilizzare per i valori della tabella diversi rispetto ai valori della riga di intestazione e della colonna sinistra.Specifies the column to use for the table values, other than the values in the header row and the left column.

Ignora i valori delle chiavi pivot senza corrispondenza e segnalali dopo l'esecuzione del flusso di datiIgnore un-matched Pivot Key values and report them after DataFlow execution
Selezionare questa opzione per configurare la trasformazione Pivot per ignorare le righe contenenti valori non riconosciuti nella colonna Chiave pivot e restituire tutti i valori di chiave pivot in un messaggio di log, quando viene eseguito il pacchetto.Select this option to configure the Pivot transformation to ignore rows containing unrecognized values in the Pivot Key column and to output all of the pivot key values to a log message, when the package is run.

È anche possibile configurare la trasformazione per restituire i valori impostando la proprietà personalizzata PassThroughUnmatchedPivotKeys su True.You can also configure the transformation to output the values by setting the PassThroughUnmatchedPivotKeys custom property to True.

Generare colonne di output pivot dai valoriGenerate pivot output columns from values
Immettere i valori di chiave pivot in questa casella per consentire alla trasformazione Pivot di creare colonne di output per ogni valore.Enter the pivot key values in this box to enable the Pivot transformation to create output columns for each value. È possibile immettere i valori prima dell'esecuzione del pacchetto oppure effettuare le operazioni seguenti.You can either enter the values prior to running the package, or do the following.

  1. Selezionare l'opzione Ignora i valori delle chiavi pivot senza corrispondenza e segnalali dopo l'esecuzione del flusso di dati , quindi fare clic su OK nella finestra di dialogo Pivot per salvare le modifiche nella trasformazione Pivot.Select the Ignore un-matched Pivot Key values and report them after DataFlow execution option, and then click OK in the Pivot dialog box to save the changes to the Pivot transformation.

  2. Eseguire il pacchetto.Run the package.

  3. Quando l'esecuzione del pacchetto viene completata correttamente, fare clic sulla scheda Stato e cercare il messaggio di log informativo della trasformazione Pivot contenente i valori di chiave pivot.When the package succeeds, click the Progress tab and look for the information log message from the Pivot transformation that contains the pivot key values.

  4. Fare clic con il pulsante destro del mouse sul messaggio e scegliere Copia testo messaggio.Right-click the message and click Copy Message Text.

  5. Fare clic su Arresta debug nel menu Debug per passare alla modalità progettazione.Click Stop Debugging on the Debug menu to switch to the design mode.

  6. Fare clic con il pulsante destro del mouse sulla trasformazione Pivot e quindi scegliere Modifica.Right-click the Pivot transformation, and then click Edit.

  7. Deselezionare l'opzione Ignora i valori delle chiavi pivot senza corrispondenza e segnalali dopo l'esecuzione del flusso di dati , quindi incollare i valori di chiave pivot nella casella Generare colonne di output pivot dai valori usando il formato seguente.Uncheck the Ignore un-matched Pivot Key values and report them after DataFlow execution option, and then paste the pivot key values in the Generate pivot output columns from values box using the following format.

    [valore1],[valore2],[valore3][value1],[value2],[value3]

    Genera colonneGenerate Columns Now
    Fare clic per creare una colonna di output per ogni valore di chiave pivot elencato nella casella Generare colonne di output pivot dai valori .Click to create an output column for each pivot key value that is listed in the Generate pivot output columns from values box.

    Le colonne di output vengono visualizzate nella casella Colonne di output trasformate tramite pivot esistenti .The output columns appear in the Existing pivoted output columns box.

    Colonne di output trasformate tramite pivot esistentiExisting pivoted output columns
    Vengono elencate le colonne di output per i valori di chiave pivotLists the output columns for the pivot key values

    La tabella seguente mostra un set di dati prima della trasformazione dei dati tramite Pivot in base alla colonna Year .The following table shows a data set before the data is pivoted on the Year column.

YearYear Nome prodottoProduct Name TotalTotal
20042004 HL Mountain TireHL Mountain Tire 1504884.151504884.15
20032003 Road Tire TubeRoad Tire Tube 35920.5035920.50
20042004 Water Bottle – 30 oz.Water Bottle – 30 oz. 2805.002805.00
20022002 Touring TireTouring Tire 62364.22562364.225

La tabella seguente mostra un set di dati dopo la trasformazione dei dati tramite Pivot in base alla colonna Year .The following table shows a data set after the data has been pivoted on the Year column.

20022002 20032003 20042004
HL Mountain TireHL Mountain Tire 141164.10141164.10 446297.775446297.775 1504884.151504884.15
Road Tire TubeRoad Tire Tube 3592.053592.05 35920.5035920.50 89801.2589801.25
Water Bottle – 30 oz.Water Bottle – 30 oz. NULLNULL NULLNULL 2805.002805.00
Touring TireTouring Tire 62364.22562364.225 375051.60375051.60 1041810.001041810.00

Per trasformare i dati tramite Pivot in base alla colonna Year , come mostrato in precedenza, vengono impostate le opzioni seguenti nella finestra di dialogo Pivot .To pivot the data on the Year column, as shown above, the following options are set in the Pivot dialog box.

  • Selezione di Year nella casella di riepilogo Chiave pivot .Year is selected in the Pivot Key list box.

  • Selezione di Product Name nella casella di riepilogo Chiave set .Product Name is selected in the Set Key list box.

  • Selezione di Total nella casella di riepilogo Valore pivot .Total is selected in the Pivot Value list box.

  • Immissione dei valori seguenti nella casella Generare colonne di output pivot dai valori .The following values are entered in the Generate pivot output columns from values box.

    [2002],[2003],[2004][2002],[2003],[2004]

Configurazione della trasformazione PivotConfiguration of the Pivot Transformation

È possibile impostare le proprietà tramite Progettazione SSISSSIS o a livello di codice.You can set properties through SSISSSIS Designer or programmatically.

Per altre informazioni sulle proprietà che è possibile impostare nella finestra di dialogo Editor avanzato , fare clic su uno degli argomenti seguenti:For more information about the properties that you can set in the Advanced Editor dialog box, click one of the following topics:

Per informazioni su come impostare le proprietà del componente, vedere Impostare le proprietà di un componente del flusso di dati.For information about how to set the properties of this component, see Set the Properties of a Data Flow Component.

Vedere ancheSee Also

Trasformazione UnPivot Unpivot Transformation
Flusso di dati Data Flow
Trasformazioni di Integration ServicesIntegration Services Transformations