Attività Flusso di dati
Data aggiornamento: 17 luglio 2006
L'attività Flusso di dati incapsula il motore flusso di dati, che consente di spostare i dati dalle origini alle destinazioni e offre la possibilità di trasformare, pulire e modificare i dati durante lo spostamento. L'aggiunta di un'attività Flusso di dati al flusso di controllo di un pacchetto consente al pacchetto di estrarre, trasformare e caricare dati.
Un flusso di dati è costituito da almeno un componente dei flussi di dati, ma è in genere formato da un set di componenti dei flussi di dati opportunamente connessi: origini che estraggono i dati, trasformazioni che modificano, inviano o riepilogano i dati e destinazioni che caricano i dati. All'interno del flusso di dati i componenti sono connessi tramite percorsi. Ogni percorso specifica i due componenti che costituiscono l'inizio e la fine del percorso. Per ulteriori informazioni, vedere Elementi dei flussi di dati.
In fase di esecuzione l'attività Flusso di dati crea un piano di esecuzione, basato sul flusso di dati, che viene eseguito dal motore flusso di dati. È possibile creare un'attività Flusso di dati priva di flusso di dati, ma l'attività verrà eseguita solo se include almeno un flusso di dati.
Nella figura seguente viene illustrata un'attività Flusso di dati con un solo flusso di dati.
Un'attività Flusso di dati può includere più flussi di dati. Se un'attività copia più set di dati e l'ordine in cui i dati vengono copiati non è significativo, è consigliabile includere più flussi di dati in un'unica attività Flusso di dati. È ad esempio possibile creare cinque flussi di dati, ognuno dei quali copia dati da un file flat a una tabella delle dimensioni diversa in uno schema di data warehouse a stella.
Se un'attività flusso di dati contiene più flussi di dati, l'ordine di esecuzione verrà automaticamente determinato dal motore flusso di dati. Se l'ordine di esecuzione è rilevante, sarà pertanto necessario includere nel pacchetto più attività Flusso di dati, ognuna contenente un solo flusso di dati. Sarà quindi possibile applicare vincoli di precedenza per controllare l'ordine di esecuzione delle attività.
Nella figura seguente viene illustrata un'attività Flusso di dati che include più flussi di dati.
Un pacchetto può includere più attività Flusso di dati, come avviene in genere nei pacchetti complessi. Se ad esempio i flussi di dati contenuti in un pacchetto devono essere eseguiti in una sequenza specifica o alternati ad altre attività, sarà necessario utilizzare un'attività Flusso di dati distinta per ogni flusso di dati.
L'attività Flusso di dati gestisce anche i flussi degli errori. Quando, in fase di esecuzione, i componenti del flusso di dati convertono dati, eseguono ricerche o valutano espressioni, possono verificarsi errori a livello di riga. Può verificarsi un errore ad esempio quando si converte in un valore integer una colonna di dati con un valore stringa o se un'espressione tenta di eseguire una divisione per zero. Entrambe le operazioni provocano errori e le righe contenenti gli errori possono essere elaborate separatamente in un flusso degli errori. Per ulteriori informazioni sull'utilizzo di flussi degli errori nei flussi di dati dei pacchetti, vedere Gestione degli errori nei dati.
Per l'inserimento di massa dei dati di file di testo in un database di SQL Server, è possibile utilizzare l'attività Inserimento di massa anziché un'attività Flusso di dati e un flusso di dati. L'attività Inserimento di massa non consente tuttavia la trasformazione dei dati. Per ulteriori informazioni, vedere Attività Inserimento di massa.
Utilizzo di espressioni di proprietà con gli elementi di un flusso di dati
Molti componenti dei flussi di dati, ad esempio origini, trasformazioni e destinazioni, supportano l'utilizzo di espressioni di proprietà in alcune delle relative proprietà. Un'espressione di proprietà è un'espressione che sostituisce il valore della proprietà quando il pacchetto viene caricato. In fase di esecuzione il pacchetto utilizza i valori aggiornati delle proprietà. Le espressioni vengono create utilizzando la sintassi delle espressioni di Integration Services e possono includere funzioni, operatori, identificatori e variabili di Integration Services. Per ulteriori informazioni, vedere Guida di riferimento alle espressioni in Integration Services, Utilizzo di espressioni nei pacchetti e Utilizzo delle espressioni di proprietà nei pacchetti.
Se si crea un pacchetto in Business Intelligence Development Studio, le proprietà dei componenti di un flusso di dati che supportano espressioni di proprietà vengono esposte nell'attività Flusso di dati a cui appartengono. Per aggiungere, modificare e rimuovere espressioni di proprietà dei componenti di un flusso di dati, fare clic sull'attività Flusso di dati e quindi utilizzare la finestra Proprietà o l'editor dell'attività per aggiungere, modificare o eliminare espressioni di proprietà. Le espressioni di proprietà per l'attività Flusso di dati possono essere gestite nella finestra Proprietà.
Se il flusso di dati contiene componenti che utilizzano espressioni, anche le espressioni vengono esposte nella finestra Proprietà. Per visualizzare le espressioni, selezionare l'attività Flusso di dati a cui appartiene il componente. È possibile visualizzare le proprietà in base alle categorie o in ordine alfabetico. Se nella finestra Proprietà si utilizza la visualizzazione Per categoria, le espressioni non utilizzate in una proprietà specifica vengono visualizzate nella categoria Varie. Se si utilizza la visualizzazione in ordine alfabetico, le espressioni sono elencate in base al nome del componente del flusso di dati.
Voci di log
Integration Services include un set di eventi del log disponibili per tutte le attività. Integration Services offre inoltre voci di log personalizzate per molte attività. Per ulteriori informazioni, vedere Implementazione della registrazione nei pacchetti e Messaggi personalizzati per la registrazione. L'attività Flusso di dati include le voci di log personalizzate seguenti:
Voce di log | Descrizione |
---|---|
BufferSizeTuning |
Indica che l'attività Flusso di dati ha modificato le dimensioni del buffer. In questa voce di log vengono indicati i motivi della modifica delle dimensioni del buffer e le nuove dimensioni temporanee del buffer. |
OnPipelinePostEndOfRowset |
Indica che a un componente è stato inviato il segnale di fine del set di righe, che viene impostato dall'ultima chiamata al metodo ProcessInput. Viene scritta una voce per ogni componente del flusso di dati che elabora dati di input. Tale voce include il nome del componente. |
OnPipelinePostPrimeOutput |
Indica che il componente ha completato l'ultima chiamata al metodo PrimeOutput. A seconda del flusso di dati, è possibile che vengano scritte più voci di log. Se il componente è un'origine, questa voce di log indica che tale componente ha terminato l'elaborazione delle righe. |
OnPipelinePreEndOfRowset |
Indica che un componente sta per ricevere il segnale di fine del set di righe, che viene impostato dall'ultima chiamata al metodo ProcessInput. Viene scritta una voce per ogni componente del flusso di dati che elabora dati di input. Tale voce include il nome del componente. |
OnPipelinePrePrimeOutput |
Indica che un componente sta per ricevere una chiamata dal metodo PrimeOutput. A seconda del flusso di dati, è possibile che vengano scritte più voci di log. |
OnPipelineRowsSent |
Specifica il numero delle righe inviate all'input di un componente da una chiamata al metodo ProcessInput. La voce di log include il nome del componente. |
PipelineBufferLeak |
Fornisce informazioni su tutti i componenti che hanno mantenuto attivi i buffer dopo la chiusura di Gestione buffer. Se vi è ancora un buffer attivo, le risorse dei buffer non sono state rilasciate e potrebbero verificarsi perdite di memoria. Nella voce di log vengono indicati il nome del componente e l'ID del buffer. |
PipelineExecutionPlan |
Specifica il piano di esecuzione del flusso di dati. Il piano di esecuzione offre informazioni sulle modalità di invio dei buffer ai componenti. Insieme alla voce di log PipelineExecutionTrees, queste informazioni illustrano ciò che avviene nell'attività Flusso di dati. |
PipelineExecutionTrees |
Specifica le strutture di esecuzione del layout nel flusso di dati. L'utilità di pianificazione del motore flusso di dati utilizza tali strutture per creare il piano di esecuzione del flusso di dati. |
PipelineInitialization |
Fornisce le informazioni di inizializzazione relative all'attività, che includono le directory da utilizzare per l'archiviazione temporanea dei dati BLOB, le dimensioni predefinite del buffer e il numero di righe in un buffer. A seconda della configurazione dell'attività Flusso di dati, è possibile che vengano scritte più voci di log. |
Queste voci di log forniscono numerose informazioni sull'esecuzione dell'attività Flusso di dati ogni volta che si esegue un pacchetto. L'esecuzione ripetuta dei pacchetti consente nel tempo di acquisire importanti informazioni cronologiche sull'elaborazione eseguita dall'attività, gli eventuali problemi che possono influire sulle prestazioni e il volume di dati gestito dall'attività.
Messaggi di esempio di un'attività Flusso di dati
Nella tabella seguente vengono elencati messaggi di esempio per le voci di log relative a un pacchetto molto semplice. Il pacchetto utilizza un'origine OLE DB per estrarre dati da una tabella, una trasformazione Ordinamento per ordinare i dati e una destinazione OLE DB per scrivere i dati in una tabella diversa.
Voce di log | Messaggi |
---|---|
BufferSizeTuning |
Le righe nel tipo di buffer 0 porterebbero a dimensioni del buffer maggiori del massimo configurato. Nei buffer di questo tipo saranno presenti solo 9637 righe. Le righe nel tipo di buffer 2 porterebbero a dimensioni del buffer maggiori del massimo configurato. Nei buffer di questo tipo saranno presenti solo 9497 righe. Le righe nel tipo di buffer 3 porterebbero a dimensioni del buffer maggiori del massimo configurato. Nei buffer di questo tipo saranno presenti solo 9497 righe. |
OnPipelinePostEndOfRowset |
A un componente verrà inviato il segnale di fine del set di righe. : 1180 : Ordinamento : 1181 : Input ordinamento A un componente verrà inviato il segnale di fine del set di righe. : 1291 : Destinazione OLE DB : 1304 : Input destinazione OLE DB |
OnPipelinePostPrimeOutput |
Un componente ha completato la chiamata PrimeOutput call. : 1180 : Ordinamento Un componente ha completato la chiamata PrimeOutput call. : 1 : Origine OLE DB |
OnPipelinePreEndOfRowset |
Un componente ha terminato l'elaborazione di tutte le righe. : 1180 : Ordinamento : 1181 : Input ordinamento Un componente ha terminato l'elaborazione di tutte le righe. : 1291 : Destinazione OLE DB : 1304 : Input destinazione OLE DB |
OnPipelinePrePrimeOutput |
Verrà eseguita una chiamata di PrimeOutput su un componente. : 1180 : Ordinamento Verrà eseguita una chiamata di PrimeOutput su un componente. : 1 : Origine OLE DB |
OnPipelineRowsSent |
Sono state passate righe come input per un componente del flusso di dati. : : 1185 : Output origine OLE DB : 1180 : Ordinamento : 1181 : Input ordinamento: 76 Sono state passate righe come input per un componente del flusso di dati. : : 1308 : Output ordinamento: 1291 : Destinazione OLE DB : 1304 : Input destinazione OLE DB : 76 |
PipelineExecutionPlan |
SourceThread0 Unità: 1 Si applica a: 1180 1291 Elenco operazioni output CreatePrimeBuffer di tipo 1 per l'ID di output 11. SetBufferListener: "WorkThread0" per ID di input 1181 CreatePrimeBuffer di tipo 3 per l'ID di output 12. CallPrimeOutput su componente "Origine OLE DB" (1) Fine elenco operazioni output End SourceThread0 WorkThread0 Unità: 1180 Si applica a: 1180 1291 Elenco operazioni input, ID input 1181 (1 prevista fine delle righe) CallProcessInput sull'ID di input 1181 sul componente "Ordinamento" (1180) per il tipo di vista 2 Fine elenco operazioni input per l'input 1181 Elenco operazioni output CreatePrimeBuffer di tipo 4 per l'ID di output 1182. SetBufferListener: "WorkThread1" per ID di input 1304 CallPrimeOutput su componente "Ordinamento" (1180) Fine elenco operazioni output End WorkThread0 WorkThread1 Unità: 1291 Si applica a: 1291 Elenco operazioni input, ID input 1304 (1 prevista fine delle righe) CallProcessInput sull'ID di input 1304 sul componente "Destinazione OLE DB" (1291) per il tipo di vista 5 Fine elenco operazioni input per l'input 1304 Elenco operazioni output Fine elenco operazioni output End WorkThread1 |
PipelineExecutionTrees |
inizio della struttura di esecuzione 0 output "Output origine OLE DB" (11) input "Input ordinamento" (1181) fine della struttura di esecuzione 0 inizio della struttura di esecuzione 1 output "Output errori origine OLE DB" (12) fine della struttura di esecuzione 1 inizio della struttura di esecuzione 2 output "Output ordinamento" (1182) input "Input destinazione OLE DB" (1304) output "Output errori destinazione OLE DB" (1305) fine della struttura di esecuzione 2 |
PipelineInitialization |
Nessuna posizione temporanea di archiviazione dei dati BLOB disponibile. Gestione buffer prenderà in considerazione le directory indicate nelle variabili di ambiente TEMP e TMP. Le dimensioni predefinite del buffer sono di 10485760 byte. I buffer conterranno 10000 righe per impostazione predefinita Il flusso di dati non rimuoverà i componenti inutilizzati perchè la proprietà RunInOptimizedMode è impostata su false. |
Per molti eventi vengono scritte più voci nel log e i messaggi relativi a numerose voci di log contengono dati complessi. Per semplificare la comprensione e la comunicazione del contenuto dei messaggi complessi, è possibile analizzare il testo dei messaggi. In base alla posizione dei log, è possibile utilizzare istruzioni Transact-SQL o un componente script per separare il testo complesso in colonne o altri formati che si ritengono più utili.
Nella tabella seguente viene ad esempio illustrato il messaggio "Sono state passate righe come input per un componente del flusso di dati. : : 1185 : Output origine OLE DB : 1180 : Ordinamento : 1181 : Input ordinamento : 76", scomposto in colonne. Il messaggio è stato scritto dall'evento OnPipelineRowsSent quando le righe sono state inviate dall'origine OLE DB alla trasformazione Ordinamento.
Colonna | Descrizione | Valore |
---|---|---|
PathID |
Valore della proprietà ID del percorso tra l'origine OLE DB e la trasformazione Ordinamento. |
1185 |
PathName |
Valore della proprietà Name del percorso. |
Output origine OLE DB |
ComponentID |
Valore della proprietà ID della trasformazione Ordinamento. |
1180 |
ComponentName |
Valore della proprietà Name della trasformazione Ordinamento. |
Sort |
InputID |
Valore della proprietà ID dell'input della trasformazione Ordinamento. |
1181 |
InputName |
Valore della proprietà Name dell'input della trasformazione Ordinamento. |
Input ordinamento |
RowsSent |
Numero di righe inviate all'input della trasformazione Ordinamento. |
76 |
Origini
Le origini seguenti includono proprietà che possono essere aggiornate tramite espressioni di proprietà:
Per ulteriori informazioni, vedere Source Custom Properties.
Trasformazioni
Le trasformazioni seguenti includono proprietà che possono essere aggiornate tramite espressioni di proprietà:
- Trasformazione Suddivisione condizionale
- Trasformazione Colonna derivata
- Trasformazione Raggruppamento fuzzy
- Trasformazione Ricerca fuzzy
- Trasformazione Comando OLE DB
- Trasformazione Campionamento percentuale
- Trasformazione Pivot
- Trasformazione Campionamento righe
- Trasformazione Ordinamento
- Trasformazione UnPivot
Per ulteriori informazioni, vedere Transformation Custom Properties.
Destinazioni
Le destinazioni seguenti includono proprietà che possono essere aggiornate tramite espressioni di proprietà:
Per ulteriori informazioni, vedere Destination Custom Properties.
Configurazione dell'attività Flusso di dati
È possibile impostare le proprietà a livello di programmazione o nella finestra Proprietà.
Per ulteriori informazioni sull'impostazione di queste proprietà nella finestra Proprietà, fare clic sull'argomento seguente:
Configurazione dell'attività Flusso di dati a livello di programmazione
Per ulteriori informazioni sull'aggiunta di un'attività Flusso di dati a un pacchetto a livello di programmazione e sulle impostazioni delle proprietà del flusso di dati, fare clic sull'argomento seguente:
Vedere anche
Concetti
Attività di Integration Services
Creazione del flusso di controllo di un pacchetto
Creazione del flusso di dati di un pacchetto
Altre risorse
Adding the Data Flow Task Programmatically
Guida in linea e informazioni
Cronologia modifiche
Versione | Cronologia |
---|---|
17 luglio 2006 |
|
14 aprile 2006 |
|
5 dicembre 2005 |
|