Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln beskriver hur inkrementell kopiering fungerar i Kopieringsjobb i Microsoft Fabric Data Factory. Den här artikeln täcker typer av vattenstämpelkolumner som stöds och hur du återställer stegvis kopiering tillbaka till en fullständig kopia.
En översikt över kopieringsjobb finns i Vad är kopieringsjobb i Data Factory för Microsoft Fabric?.
Kopieringslägen (fullständig kopia, inkrementell kopiering)
Du kan välja hur dina data kopieras från källa till mål:
- Fullständig kopia: Varje gång jobbet körs kopieras alla data från källan till målet.
- Inkrementell kopia: Den första körningen kopierar allt och efterföljande körningar flyttar bara nya eller ändrade data sedan den senaste körningen.
Så här fungerar inkrementell kopiering
Vid inkrementell kopiering, överför varje körning efter den första fullständiga kopian (kallas en "följande laddning") endast vissa ändringar. Kopieringsjobb spårar och hanterar automatiskt tillståndet för den senaste lyckade körningen, så att det kan avgöra vilken data som ska kopieras nästa gång.
- När ett kopieringsjobb kopierar från en databas med en inkrementell kolumn ("vattenmärkeskolumn"), kopierar varje efterföljande inläsning endast rader med ett värde i den kolumnen som är större än någon rad som tidigare kopierats.
- När ett kopieringsjobb kopierar från en databas som har CDC aktiverat kopierar varje efterföljande körning alla rader som infogats, uppdaterats eller raderats sedan den senaste lyckade körningen.
- När kopieringsjobbet kopierar filer kopierar varje efterföljande laddning endast de filer som skapats eller ändrats sedan den senaste lyckade körningen.
Om din databas har CDC aktiverat behöver du inte välja en inkrementell kolumn – Kopieringsjobbet identifierar ändringarna automatiskt. Mer information finns i Ändra datainsamling (CDC) i Kopieringsjobb.
Om ett kopieringsjobb misslyckas behöver du inte bekymra dig om dataförlust. Kopieringsjobbet återupptas alltid efter den senaste lyckade körningens slut. Ett fel ändrar inte tillståndet som hanteras av kopieringsjobbet.
När du ska använda CDC jämfört med vattenstämpelbaserad inkrementell kopia
Kopieringsjobbet stöder två metoder för att identifiera ändringar i databaskällor: CDC och vattenstämpelbaserad inkrementell kopia. Välj den som bäst passar ditt källsystem, datamönster och underordnade krav.
När du ska använda CDC
CDC passar bra när:
- Källdatabasen har CDC aktiverat och kopieringsjobbet stöder CDC för den kopplingen. Se Ändra datainsamling (CDC) i Kopieringsjobb för listan över källor som stöds.
- Du måste replikera borttagningar, inte bara infogningar och uppdateringar. CDC samlar in borttagningshändelser så att målet kan hållas synkroniserat med källan.
- Du vill att målet ska synkroniseras kontinuerligt med källan som en speglad kopia, till exempel genom att använda skrivbeteendet SCD Type 1 (Merge).
- Du behöver historisk spårning av ändringar på målet. CDC i kopieringsjobbet stöder SCD Type 2, vilket bevarar tidigare versioner av varje datapost.
- Du vill minimera belastningen på källan. CDC läser från databasens ändringsflöde i stället för att genomsöka källtabellen efter rader som är nyare än en vattenstämpel, vilket kan vara mer effektivt för tabeller med hög ändringsvolym.
- Källan har ingen tillförlitlig inkrementell kolumn som du kan använda som vattenstämpel.
När du ska använda vattenstämpelbaserad inkrementell kopia
Vattenstämpelbaserad inkrementell kopia passar bra när:
- CDC är inte aktiverat eller är inte tillgängligt i källdatabasen, eller så kan du inte aktivera det på grund av behörigheter, licensiering eller källsystembegränsningar.
- Källtabellen har en tillförlitlig inkrementell kolumn som ökar monotont när rader infogas eller uppdateras. Information om typer som stöds finns i Vattenstämpelkolumntyper som stöds.
- Du behöver bara spåra infogningar och uppdateringar, inte borttagningar. Vattenstämpelbaserad inkrementell kopia kan inte identifiera rader som tas bort från källan.
- Du kopierar filer baserat på deras senast ändrade datum. Filbaserad inkrementell kopiering använder tidsstämpeln för filändring som en markör.
Snabbjämförelse
| Att tänka på | CDC | Vattenstämpelbaserad inkrementell kopiering |
|---|---|---|
| Krav för källan | CDC aktiverat på källdatabasen och stöds av anslutningsappen Kopiera jobb | En kolumn som monotont ökar vid infogning eller uppdatering |
| Identifierar infogningar | Ja | Ja |
| Identifierar uppdateringar | Ja | Ja (när vattenstämpelkolumnen ändras) |
| Identifierar borttagningar | Ja | No |
| Typiska skrivmetoder | Sammanslagning eller SCD-typ 2 | Lägg till eller slå samman (när det är konfigurerat) |
Om din databas har CDC aktiverat behöver du inte välja en inkrementell kolumn – Kopieringsjobbet identifierar ändringarna automatiskt. När en källtabell inte har CDC aktiverat följer kopieringsjobbet en vattenstämpelbaserad inkrementell kopieringsmetod.
Typer av vattenstämpelkolumner som stöds
Kopieringsjobbet stöder följande typer av vattenstämpelkolumner för vattenstämpelbaserad inkrementell kopia från en databas:
- ROWVERSION: En binär kolumn som ändras automatiskt när en rad ändras. Det är idealiskt för SQL-baserade system med transaktionsarbetsbelastningar med högt dataflöde, eftersom varje infogning eller uppdatering samlas in tillförlitligt utan beroende på programhanterade tidsstämplar.
-
Datetime: Datetime-kolumner som
LastUpdatedDatetimeellerModifiedAtsom lagrar både datum och tid. Kopieringsjobbet använder den exakta tidsstämpeln för att spåra inkrementella framsteg över körningar. Datetime föredras när källan spårar ändringar med hög frekvensprecision. -
Datum: Endast datumkolumner som
LastUpdatedDate. Eftersom datumvärden inte innehåller någon tidskomponent tillämpar Kopieringsjobb automatiskt fördröjd extrahering från den senaste dagen för att säkerställa att det inte finns någon dataförlust eller överlappning mellan körningar, vilket på ett säkert sätt hanterar inkrementella fönster. Datum är lämpligt för dagliga batchprocesser. - Sträng (tolkas som datetime): Strängkolumner vars värden kan tolkas som datetime. På så sätt kan du använda inkrementell kopiering även när tidsstämplar lagras som strängar, utan att behöva gjuta eller transformera kolumner eller göra schemaändringar i källan.
- Heltal: Ett ökande tal som spårar radändringar.
Använd en kolumntyp som inte stöds som vattenstämpel genom att casta med Query
Om kolumnen som du vill använda som vattenstämpel inte är en av de typer som stöds, men dess värden faktiskt är jämförbara, kan du fortfarande använda den för inkrementell kopiering genom att gjuta den till en typ som stöds i frågefunktionen i Kopieringsjobbet. Till exempel kan en varchar kolumn som bara lagrar numeriska värden som "1001", "1002"och så vidare gjutas till ett heltal.
När du konfigurerar källan använder du alternativet Fråga för att projicera kolumnen som en typ som stöds (till exempel omvandla ett numeriskt varchar till ett heltal). Kopieringsuppgiften behandlar sedan den projicerade kolumnen som en stödd typ, så att du kan välja den som inkrementell kolumn.
Om CustomerID till exempel är en varchar kolumn som lagrar heltalsvärden kan du använda en fråga som liknar följande för att göra den tillgänglig som en heltalsvattenstämpelkolumn:
SELECT
CAST(CustomerID AS INT) AS CustomerID,
Name,
LastUpdated
FROM dbo.Customers
Välj sedan den projicerade CustomerID kolumnen som den inkrementella kolumnen.
Den här metoden fungerar bara när de underliggande värdena är jämförbara, till exempel numeriska värden eller datum som lagras som strängar. Verkligt alfanumeriska värden, till exempel ID:n som blandar bokstäver och siffror i godtycklig ordning, kan inte användas som en vattenstämpelkolumn eftersom deras värden inte är jämförbara på ett sätt som identifierar nya eller ändrade rader på ett tillförlitligt sätt.
Så här hanteras NULL-värden i en vattenstämpelkolumn
Vattenstämpelbaserad inkrementell kopia upptäcker nya eller ändrade rader genom att jämföra värden i vattenstämpelkolumnen från en körning till nästa. Eftersom NULL-värden inte kan jämföras på det här sättet hanteras de på följande sätt:
- Inledande fullständig belastning: Rader med ett NULL-värde i vattenstämpelkolumnen ingår. Den första körningen kopierar den fullständiga datamängden, oavsett vattenstämpelvärden.
- Efterföljande inkrementella inläsningar: Rader med ett NULL-värde i vattenstämpelkolumnen undantas. Endast rader vars vattenstämpelvärde är större än den senast registrerade vattenstämpeln kopieras och NULL-värden kan inte uppfylla den jämförelsen. Därför hämtas inte någon rad som infogas eller uppdateras med ett NULL-vattenstämpelvärde efter den initiala laddningen av senare inkrementella körningar.
- Kolumntillgänglighet i listrutan: När du väljer den inkrementella kolumnen i Kopieringsjobbet kanske kolumner som inte är giltiga för vattenstämpelbaserad spårning kanske inte visas i listrutan. Kontrollera att kolumntypen är en av de vattenstämpelkolumntyper som stöds och att kolumnen är tillgänglig för den anslutning som du använder.
Återställa inkrementell kopia
Du har flexibiliteten att hantera inkrementell kopiering, inklusive möjligheten att återställa den till en fullständig kopia vid nästa körning. Det här är otroligt användbart när det finns en dataavvikelse mellan källan och målet. Du kan helt enkelt låta Copy job utföra en fullständig kopia i nästa körning för att lösa problemet, och därefter kan du fortsätta med inkrementella uppdateringar.
Du kan återställa inkrementell kopiering antingen per helt jobb eller per tabell, vilket ger dig detaljerad kontroll. Du kan till exempel kopiera om mindre tabeller utan att påverka större tabeller. Det innebär smartare felsökning, mindre avbrott och effektivare dataflytt.
I vissa fall när du redigerar ett kopieringsjobb, till exempel genom att uppdatera den inkrementella kolumnen i källtabellen, återställer kopieringsjobbet den inkrementella kopian till en fullständig kopia vid nästa körning. Detta säkerställer datakonsekvens mellan källan och målet.
Förstå återställningsbeteende
Om ditt kopieringsjobb använder inkrementell kopiering upprätthåller Fabric internt tillstånd (till exempel en vattenstämpel eller kontrollpunkt) för att veta vilka data som redan har bearbetats.
Vad gör återställning?
Återställning rensar kopieringsjobbets inkrementella tillstånd (vattenstämpel/kontrollpunkt) för de valda källorna. När du har återställt fungerar nästa körning som en första körning för inkrementell logik (till exempel kan den läsa hela dataområdet igen, beroende på din konfiguration).
Vad återställning inte gör
Återställ tar inte bort, trunkerar eller ändrar på annat sätt data i destinationen. Befintliga rader finns kvar i måltabellen eller filerna.
Varför återställning kan skapa dubbletter
Om du återställer och nästa körning läser data som tidigare har laddats in beror resultatet på ditt skrivbeteende för destinationen.
- Tillägg: Tidigare inlästa rader kan skrivas igen, vilket orsakar dubbletter.
- Överskrivning/sammanslagning/upsert (om det är konfigurerat): Dubblettrisken minskas eftersom befintliga data kan ersättas eller matchas, men det exakta beteendet beror på målet och dina mappningar/nycklar.
Bästa praxis när man använder Återställ med tillägg
Om du måste använda Append och även behöver återställa:
- Trunkera eller på annat sätt rensa måltabellen/data (till exempel ta bort befintliga rader) innan du kör kopieringsjobbet igen.
- Kör kopieringsjobbet när destinationen har rensats.
Detta säkerställer att de omlästa data inte staplas ovanpå befintliga data.