Condividi tramite


Trasformazione Pivot

Data aggiornamento: 14 aprile 2006

La trasformazione Pivot converte 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. 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. 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, 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. Poiché non tutti i clienti acquistano tutti i prodotti, molte colonne possono contenere valori Null.

Quando si trasforma un set di dati tramite Pivot, le colonne di input svolgono ruoli diversi nel processo. Una colonna può partecipare nei modi seguenti:

  • La colonna viene passata all'output invariata. 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.
  • La colonna viene utilizzata come chiave, o parte di una chiave, che identifica un set di record.
  • La colonna definisce il pivot. I valori nella colonna vengono associati alle colonne del set di dati trasformato tramite Pivot.
  • La colonna contiene valori che vengono inseriti nelle colonne create dalla trasformazione Pivot.

Nella figura seguente viene illustrato un set di dati prima della trasformazione tramite Pivot in base alla colonna Product.

Set di dati dopo la trasformazione tramite Pivot

Nella figura seguente viene illustrato un set di dati dopo la trasformazione tramite Pivot in base alla colonna Product.

Set di dati prima della trasformazione tramite Pivot

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. 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. Se ad esempio il set di dati viene trasformato tramite Pivot in base alla colonna Name, ma i nomi non sono ordinati, il set di dati di output potrà includere più di una riga per ogni cliente, perché viene eseguita un'operazione Pivot ogni volta che cambia il valore in Name.

I dati di input potrebbero contenere righe duplicate, provocando l'errore della trasformazione Pivot. Per righe duplicate si intendono righe che contengono gli stessi valori nelle colonne chiave del set e nelle colonne pivot. Se ad esempio si utilizza un set di dati prima della trasformazione tramite Pivot in base alla colonna Product, come illustrato nel diagramma, e si aggiunge una riga con il valore Kate nella colonna Cust e il valore Soda nella colonna Product, questi valori duplicati provocheranno l'errore della trasformazione Pivot, indipendentemente dalla quantità indicata nella colonna Qty. 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. Nel set di dati di esempio è ad esempio possibile sommare i valori nella colonna Qty per cliente e per prodotto.

La trasformazione Pivot utilizza le proprietà delle colonne di input e output per definire l'operazione Pivot.

La trasformazione Pivot include la proprietà personalizzata PivotKeyValue, che può essere aggiornata da un'espressione di proprietà al caricamento del pacchetto. Per ulteriori informazioni, vedere Guida di riferimento alle espressioni in Integration Services, Utilizzo delle espressioni di proprietà nei pacchetti e Transformation Custom Properties.

Questa trasformazione include un input, un output regolare e un output degli errori.

Configurazione del set di dati di esempio

Il set di dati di esempio illustrato nella figura è stato configurato nel modo seguente: la proprietà PivotUsage della colonna Cust è stata impostata su 1, per indicare che si tratta di una colonna chiave del set. La proprietà PivotUsage della colonna di input Product è stata impostata su 2, per indicare che è necessario creare una colonna per ogni prodotto. La proprietà PivotUsage della colonna di input Qty è stata impostata su 3, per indicare che i valori delle quantità vengono inseriti nella colonna pivot.

L'output della trasformazione è stato configurato in modo da includere sei colonne. Le colonne, che possono essere aggiunte utilizzando la finestra di dialogo Editor avanzato, sono state denominate Cust, Ham, Soda, Milk, Beer e Chips. La proprietà PivotKeyValue della colonna Ham è stata impostata su Ham, per indicare che la trasformazione deve cercare tale valore nella colonna di input. Analogamente, la proprietà PivotKeyValue della colonna Soda è stata impostata su Soda e così via.

È stato quindi eseguito il mapping delle colonne nell'input della trasformazioni a quelle nell'output.

La proprietà SourceColumn della colonna Cust è stata configurata in modo da utilizzare l'identificatore di derivazione della colonna di input Cust. Le proprietà SourceColumn delle colonne Ham, Soda, Milk, Beer e Chips sono state configurate in modo da utilizzare l'identificatore di derivazione della colonna di input Qty. In alternativa è possibile impostare la proprietà SourceColumn delle colonne Ham, Soda, Milk, Beer e Chips su -1, provocando l'inserimento del valore True anziché quello dei dati. Al posto dei valori 12 e 24, ad esempio, la colonna Beer conterrebbe il valore True, che indica semplicemente che il cliente ha acquistato il prodotto, anziché mostrare la quantità acquistata.

Le righe nell'output della trasformazione contengono i valori delle colonne di input Cust e Qty.

Opzioni della trasformazione Pivot

Per specificare il ruolo svolto da ogni colonna nel processo di trasformazione tramite Pivot, è necessario impostare la proprietà PivotUsage delle colonne di input. I valori validi per PivotUsage sono 0, 1, 2 e 3.

Nella tabella seguente vengono descritte le opzioni di PivotUsage.

Opzione Descrizione

0

La colonna non viene trasformata tramite Pivot e i valori della colonna vengono passati all'output della trasformazione.

1

La colonna fa parte della chiave del set che identifica una o più righe come parte di un set specifico. Tutte le righe di input con la stessa chiave del set vengono combinate in una singola riga di output.

2

La colonna è una colonna pivot. Viene creata almeno una colonna per ogni valore di questa colonna.

3

I valori di questa colonna vengono inseriti in colonne create come risultato della trasformazione Pivot.

Configurazione della trasformazione Pivot

È possibile impostare le proprietà tramite Progettazione SSIS o a livello di programmazione.

Per ulteriori informazioni sulle proprietà che è possibile impostare nella finestra di dialogo Editor avanzato o a livello di programmazione, fare clic su uno degli argomenti seguenti:

Per ulteriori informazioni sulle procedure per l'impostazione delle proprietà, fare clic su uno degli argomenti seguenti:

Vedere anche

Concetti

Trasformazione UnPivot
Creazione del flusso di dati di un pacchetto
Trasformazioni di Integration Services

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

14 aprile 2006

Nuovo contenuto:
  • Aggiunta di informazioni su come identificare e gestire le righe duplicate nell'input della trasformazione.

5 dicembre 2005

Nuovo contenuto:
  • Aggiunta delle informazioni relative all'utilizzo di espressioni di proprietà nella proprietà personalizzata PivotKeyValue.