Dela via


Dataflödesuppgift

gäller för:SQL Server SSIS Integration Runtime i Azure Data Factory

Dataflödesaktiviteten kapslar in dataflödesmotorn som flyttar data mellan källor och mål och låter användaren transformera, rensa och ändra data när de flyttas. Genom att lägga till en dataflödesaktivitet i ett paketkontrollflöde kan paketet extrahera, transformera och läsa in data.

Ett dataflöde består av minst en dataflödeskomponent, men det är vanligtvis en uppsättning anslutna dataflödeskomponenter: källor som extraherar data; transformeringar som ändrar, dirigerar eller sammanfattar data. och mål som läser in data.

Vid körning skapar dataflödesaktiviteten en körningsplan från dataflödet och dataflödesmotorn kör planen. Du kan skapa en dataflödesaktivitet som inte har något dataflöde, men aktiviteten körs bara om den innehåller minst ett dataflöde.

Om du vill massinfoga data från textfiler i en SQL Server-databas kan du använda massinfogningsaktiviteten i stället för en dataflödesaktivitet och ett dataflöde. Massinfogningsaktiviteten kan dock inte transformera data. För mer information, se Bulk Insert Task.

Flera flöden

En dataflödesaktivitet kan innehålla flera dataflöden. Om en uppgift kopierar flera uppsättningar data, och om ordningen som data kopieras i inte är betydande, kan det vara enklare att inkludera flera dataflöden i dataflödesaktiviteten. Du kan till exempel skapa fem dataflöden, där var och en kopierar data från en platt fil till en annan dimensionstabell i ett star-schema för informationslager.

Dataflödesmotorn avgör dock körningsordningen när det finns flera dataflöden i en dataflödesaktivitet. När ordningen är viktig bör paketet därför använda flera dataflödesuppgifter, där varje uppgift innehåller ett dataflöde. Du kan sedan använda prioritetsbegränsningar för att styra körningsordningen för aktiviteterna.

Följande diagram visar en dataflödesaktivitet som har flera dataflöden.

Dataflöden

Loggposter

Integration Services tillhandahåller en uppsättning logghändelser som är tillgängliga för alla aktiviteter. Integration Services tillhandahåller även anpassade loggposter för många uppgifter. Mer information finns i avsnittet om loggning av Integration Services (SSIS) . Dataflödesaktiviteten innehåller följande anpassade loggposter:

Logganteckning Description
BufferSizeTuning Anger att dataflödesaktiviteten ändrade buffertens storlek. Loggposten beskriver orsakerna till storleksändringen och visar en lista över den tillfälliga nya buffertstorleken.
OnPipelinePostEndOfRowset Anger att en komponent har fått sin slutsignal för raduppsättningen, vilket anges av det sista anropet av metoden ProcessInput. En post skrivs för varje komponent i dataflödet som bearbetar indata. Posten innehåller komponentens namn.
OnPipelinePostPrimeOutput Anger att komponenten har slutfört sitt senaste anrop till PrimeOutput-metoden . Beroende på dataflödet kan flera loggposter skrivas. Om komponenten är en källa innebär den här loggposten att komponenten har bearbetat rader.
OnPipelinePreEndOfRowset Anger att en komponent kommer att ta emot slutsignalen för radsamlingen, som anges av det sista anropet av metoden ProcessInput. En post skrivs för varje komponent i dataflödet som bearbetar indata. Posten innehåller komponentens namn.
OnPipelinePrePrimeOutput Anger att komponenten är på väg att ta emot sitt anrop från PrimeOutput-metoden . Beroende på dataflödet kan flera loggposter skrivas.
OnPipelineRowsSent Rapporterar antalet rader som tillhandahålls till en komponentinmatning av ett anrop till metoden ProcessInput . Loggposten innehåller komponentnamnet.
PipelineBufferLeak Innehåller information om alla komponenter som höll buffertar vid liv när bufferthanteraren försvinner. Om en buffert fortfarande är aktiv släpptes inte buffertarnas resurser frigöras, vilket kan leda till minnesläckor. Loggposten innehåller namnet på komponenten och buffertens ID.
PipelineComponentTime Rapporterar hur lång tid (i millisekunder) som komponenten spenderade i vart och ett av de fem viktigaste bearbetningsstegen– Validate, PreExecute, PostExecute, ProcessInput och ProcessOutput.
PipelineExecutionPlan Rapporterar utförandeplanen för dataflödet. Körningsplanen innehåller information om hur buffertar skickas till komponenter. Den här informationen, i kombination med loggposten PipelineExecutionTrees, beskriver vad som händer i dataflödesaktiviteten.
PipelineExecutionTrees Rapporterar exekveringsträden för layouten i dataflödet. Schemaläggaren för dataflödesmotorn använder träden för att bygga exekveringsplanen för dataflödet.
PipelineInitialisering Innehåller initieringsinformation om uppgiften. Den här informationen omfattar de kataloger som ska användas för tillfällig lagring av BLOB-data, standardbuffertstorleken och antalet rader i en buffert. Beroende på konfigurationen av dataflödesaktiviteten kan flera loggposter skrivas.

Dessa loggposter innehåller en mängd information om körningen av dataflödesaktiviteten varje gång du kör ett paket. När du kör paketen upprepade gånger kan du samla in information som med tiden ger viktig historisk information om den bearbetning som aktiviteten utför, problem som kan påverka prestanda och den datavolym som uppgiften hanterar.

Mer information om hur du använder dessa loggposter för att övervaka och förbättra dataflödets prestanda finns i något av följande avsnitt:

Exempelmeddelanden från en dataflödesaktivitet

I följande tabell visas exempelmeddelanden för loggposter för ett mycket enkelt paket. Paketet använder en OLE DB-källa för att extrahera data från en tabell, en sorteringstransformering för att sortera data och ett OLE DB-mål för att skriva data till en annan tabell.

Logganteckning Messages
BufferSizeTuning Rows in buffer type 0 would cause a buffer size greater than the configured maximum. There will be only 9637 rows in buffers of this type.

Rows in buffer type 2 would cause a buffer size greater than the configured maximum. There will be only 9497 rows in buffers of this type.

Rows in buffer type 3 would cause a buffer size greater than the configured maximum. There will be only 9497 rows in buffers of this type.
OnPipelinePostEndOfRowset A component will be given the end of rowset signal. : 1180 : Sort : 1181 : Sort Input

A component will be given the end of rowset signal. : 1291 : OLE DB Destination : 1304 : OLE DB Destination Input
OnPipelinePostPrimeOutput A component has returned from its PrimeOutput call. : 1180 : Sort

A component has returned from its PrimeOutput call. : 1 : OLE DB Source
OnPipelinePreEndOfRowset A component has finished processing all of its rows. : 1180 : Sort : 1181 : Sort Input

A component has finished processing all of its rows. : 1291 : OLE DB Destination : 1304 : OLE DB Destination Input
OnPipelinePrePrimeOutput PrimeOutput will be called on a component. : 1180 : Sort

PrimeOutput will be called on a component. : 1 : OLE DB Source
OnPipelineRowsSent Rows were provided to a data flow component as input. : : 1185 : OLE DB Source Output : 1180 : Sort : 1181 : Sort Input : 76

Rows were provided to a data flow component as input. : : 1308 : Sort Output : 1291 : OLE DB Destination : 1304 : OLE DB Destination Input : 76
PipelineComponentTime The component "Calculate LineItemTotalCost" (3522) spent 356 milliseconds in ProcessInput.

The component "Sum Quantity and LineItemTotalCost" (3619) spent 79 milliseconds in ProcessInput.

The component "Calculate Average Cost" (3662) spent 16 milliseconds in ProcessInput.

The component "Sort by ProductID" (3717) spent 125 milliseconds in ProcessInput.

The component "Load Data" (3773) spent 0 milliseconds in ProcessInput.

The component "Extract Data" (3869) spent 688 milliseconds in PrimeOutput filling buffers on output "OLE DB Source Output" (3879).

The component "Sum Quantity and LineItemTotalCost" (3619) spent 141 milliseconds in PrimeOutput filling buffers on output "Aggregate Output 1" (3621).

The component "Sort by ProductID" (3717) spent 16 milliseconds in PrimeOutput filling buffers on output "Sort Output" (3719).
PipelineExecutionPlan SourceThread0

Drives: 1

Influences: 1180 1291

Output Work List

CreatePrimeBuffer of type 1 for output ID 11.

SetBufferListener: "WorkThread0" for input ID 1181

CreatePrimeBuffer of type 3 for output ID 12.

CallPrimeOutput on component "OLE DB Source" (1)

End Output Work List

End SourceThread0

WorkThread0

Drives: 1180

Influences: 1180 1291

Input Work list, input ID 1181 (1 EORs Expected)

CallProcessInput on input ID 1181 on component "Sort" (1180) for view type 2

End Input Work list for input 1181

Output Work List

CreatePrimeBuffer of type 4 for output ID 1182.

SetBufferListener: "WorkThread1" for input ID 1304

CallPrimeOutput on component "Sort" (1180)

End Output Work List

End WorkThread0

WorkThread1

Drives: 1291

Influences: 1291

Input Work list, input ID 1304 (1 EORs Expected)

CallProcessInput on input ID 1304 on component "OLE DB Destination" (1291) for view type 5

End Input Work list for input 1304

Output Work List

End Output Work List

End WorkThread1
PipelineExecutionTrees begin execution tree 0

output "OLE DB Source Output" (11)

input "Sort Input" (1181)

end execution tree 0

begin execution tree 1

output "OLE DB Source Error Output" (12)

end execution tree 1

begin execution tree 2

output "Sort Output" (1182)

input "OLE DB Destination Input" (1304)

output "OLE DB Destination Error Output" (1305)

end execution tree 2
Pipeline-initialisering No temporary BLOB data storage locations were provided. The buffer manager will consider the directories in the TEMP and TMP environment variables.

The default buffer size is 10485760 bytes.

Buffers will have 10000 rows by default

The data flow will not remove unused components because its RunInOptimizedMode property is set to false.

Många logghändelser skriver flera poster och meddelandena för ett antal loggposter innehåller komplexa data. För att göra det enklare att förstå och kommunicera innehållet i komplexa meddelanden kan du parsa meddelandetexten. Beroende på var loggarna finns kan du använda Transact-SQL-instruktioner eller en skriptkomponent för att separera den komplexa texten i kolumner eller andra format som du tycker är mer användbara.

Följande tabell innehåller till exempel meddelandet "Rader har angetts till en dataflödeskomponent som indata. : : 1185 : OLE DB Source Output : 1180 : Sort : 1181 : Sort Input : 76", parsad i kolumner. Meddelandet skrevs av händelsen OnPipelineRowsSent när rader skickades från OLE DB-källan till sorteringstransformeringen.

Kolumn Description Värde
PathID Värdet från ID-egenskapen för sökvägen mellan OLE DB-källan och Sort-transformationen. 1185
Sökvägsnamn Värdet av egenskapen Name för sökvägen. OLE DB-källutdata
ComponentID Värdet för ID-egenskapen för sorttransformeringen. 1180
ComponentName Värdet från egenskapen Name för sorttransformeringen. Sortera
InputID Värdet från ID-egenskapen för indata till sorteringstransformeringen. 1181
InputName Värdet från egenskapen Namn för indata i Sorteringstransformationen. Sortera indata
RaderSent Antalet rader som skickas till indata för sorttransformeringen. 76

Konfiguration av dataflödesaktiviteten

Du kan ange egenskaper i fönstret Egenskaper eller programmatiskt.

Klicka på följande ämne om du vill ha mer information om hur du anger dessa egenskaper i fönstret Egenskaper :

Programmatisk konfiguration av dataflödesuppgiften

Om du vill ha mer information om hur du programmatiskt lägger till en dataflödesaktivitet i ett paket och anger dataflödesegenskaper klickar du på följande ämne:

Ange egenskaper för en aktivitet eller container

Video, Balanced Data Distributer, på technet.microsoft.com.