Använda inkrementell uppdatering med dataflöden

Med dataflöden kan du föra in stora mängder data i Power BI eller din organisations tillhandahållna lagring. I vissa fall är det dock inte praktiskt att uppdatera en fullständig kopia av källdata i varje uppdatering. Ett bra alternativ är inkrementell uppdatering, vilket ger följande fördelar för dataflöden:

  • Uppdateringen sker snabbare: Endast data som har ändrats behöver uppdateras. Du kan till exempel bara uppdatera de senaste fem dagarna i ett 10-årigt dataflöde.
  • Uppdateringen är mer tillförlitlig: Det är till exempel inte nödvändigt att underhålla långvariga anslutningar till flyktiga källsystem.
  • Resursförbrukningen minskar: Mindre data att uppdatera minskar den totala förbrukningen av minne och andra resurser.

Inkrementell uppdatering är tillgänglig i dataflöden som skapats i Power BI och dataflöden som skapats i Power Apps. Den här artikeln visar skärmar från Power BI, men de här instruktionerna gäller för dataflöden som skapats i Power BI eller i Power Apps.

Kommentar

När schemat för en tabell i ett analytiskt dataflöde ändras sker en fullständig uppdatering för att säkerställa att alla resulterande data matchar det nya schemat. Därför uppdateras alla data som lagras inkrementellt och i vissa fall, om källsystemet inte behåller historiska data, går förlorade.

Inkrementell uppdatering för dataflöden.

Om du använder inkrementell uppdatering i dataflöden som skapats i Power BI måste dataflödet finnas på en arbetsyta i Premium-kapacitet. Inkrementell uppdatering i Power Apps kräver Power Apps per app eller per användare och är endast tillgängligt för dataflöden med Azure Data Lake Storage som mål.

I Power BI eller Power Apps kräver inkrementell uppdatering att källdata som matas in i dataflödet har ett DateTime-fält där inkrementell uppdatering kan filtreras.

Konfigurera inkrementell uppdatering för dataflöden

Ett dataflöde kan innehålla många tabeller. Inkrementell uppdatering konfigureras på tabellnivå, vilket gör att ett dataflöde kan innehålla både fullständigt uppdaterade tabeller och inkrementellt uppdaterade tabeller.

Om du vill konfigurera en inkrementellt uppdaterad tabell börjar du med att konfigurera tabellen på samma sätt som andra tabeller.

När dataflödet har skapats och sparats väljer du Inkrementell uppdateringInkrementell uppdatering. i tabellvyn, enligt följande bild.

Inkrementell uppdateringsikon för dataflöden.

När du väljer ikonen visas fönstret Inställningar för inkrementell uppdatering . Aktivera inkrementell uppdatering.

Inkrementell uppdatering för dataflöden.

I följande lista förklaras inställningarna i fönstret Inställningar för inkrementell uppdatering .

  • Aktivera/inaktivera inkrementell uppdatering: Aktiverar eller inaktiverar inkrementell uppdateringsprincip för tabellen.

  • Listrutan Filterfält: Väljer det frågefält som tabellen ska filtreras efter steg. Det här fältet innehåller endast DateTime-fält. Du kan inte använda inkrementell uppdatering om tabellen inte innehåller ett DateTime-fält.

    Viktigt!

    Välj ett oförändrat datumfält för filtret för inkrementell uppdatering. Om fältvärdet ändras (till exempel med ett datum ändrat fält) kan detta leda till uppdateringsfel på grund av duplicerade värden i data.

  • Lagra/uppdatera rader från det förflutna: Exemplet i föregående bild illustrerar de följande inställningarna.

    I det här exemplet definierar vi en uppdateringsprincip för att lagra fem års data totalt och stegvis uppdatera 10 dagars data. Förutsatt att tabellen uppdateras dagligen utförs följande åtgärder för varje uppdateringsåtgärd:

    • Lägg till en ny dag med data.

    • Uppdatera 10 dagar, fram till aktuellt datum.

    • Ta bort kalenderår som är äldre än fem år före det aktuella datumet. Om det aktuella datumet till exempel är den 1 januari 2019 tas år 2013 bort.

    Den första dataflödesuppdateringen kan ta ett tag att importera alla fem åren, men efterföljande uppdateringar kommer sannolikt att slutföras mycket snabbare.

  • Identifiera dataändringar: En inkrementell uppdatering på 10 dagar är mycket effektivare än en fullständig uppdatering på fem år, men du kanske kan göra ännu bättre. När du markerar kryssrutan Identifiera dataändringar kan du välja en datum/tid-kolumn för att bara identifiera och uppdatera de dagar då data har ändrats. Detta förutsätter att en sådan kolumn finns i källsystemet, vilket vanligtvis är i granskningssyfte. Det maximala värdet för den här kolumnen utvärderas för var och en av perioderna i det inkrementella intervallet. Om dessa data inte har ändrats sedan den senaste uppdateringen behöver du inte uppdatera perioden. I exemplet kan detta ytterligare minska de dagar som uppdateras stegvis från 10 till kanske 2.

    Dricks

    Den aktuella designen kräver att kolumnen som används för att identifiera dataändringar sparas och cachelagras i minnet. Du kanske vill överväga någon av följande tekniker för att minska kardinaliteten och minnesförbrukningen:

    • Spara endast det maximala värdet för den här kolumnen vid tidpunkten för uppdateringen, kanske med hjälp av en Power Query-funktion.
    • Minska precisionen till en nivå som är acceptabel med tanke på dina krav på uppdateringsfrekvens.
  • Uppdatera endast fullständiga perioder: Anta att uppdateringen är schemalagd att köras kl. 04:00 varje dag. Om data visas i källsystemet under de första fyra timmarna den dagen kanske du inte vill ta hänsyn till dem. Vissa affärsmått, till exempel fat per dag i olje- och gasindustrin, är inte praktiska eller förnuftiga att ta hänsyn till baserat på partiella dagar.

    Ett annat exempel där det bara är lämpligt att uppdatera fullständiga perioder är att uppdatera data från ett finansiellt system. Föreställ dig ett finansiellt system där data för föregående månad godkänns den 12:e kalenderdagen i månaden. Du kan ange inkrementellt intervall till en månad och schemalägga uppdateringen så att den körs den 12:e dagen i månaden. Med det här alternativet valt uppdaterar systemet januaridata (den senaste fullständiga månadsperioden) den 12 februari.

Kommentar

Inkrementell dataflödesuppdatering avgör datum enligt följande logik: om en uppdatering schemaläggs använder inkrementell uppdatering för dataflöden den tidszon som definierats i uppdateringsprincipen. Om det inte finns något schema för uppdatering använder inkrementell uppdatering tiden från datorn som kör uppdateringen.

När inkrementell uppdatering har konfigurerats ändrar dataflödet automatiskt din fråga så att den inkluderar filtrering efter datum. Om dataflödet skapades i Power BI kan du också redigera den automatiskt genererade frågan med hjälp av den avancerade redigeraren i Power Query för att finjustera eller anpassa uppdateringen. Läs mer om inkrementell uppdatering och hur det fungerar i följande avsnitt.

Kommentar

När du redigerar dataflödet ansluter Power Query-redigeraren direkt till datakällan och visar inte data som cachelagrats/filtrerats i dataflödet efter att ha bearbetats av principen för inkrementell uppdatering. Om du vill kontrollera data som cachelagras i dataflödet ansluter du från Power BI Desktop till dataflödet när du har konfigurerat principen för inkrementell uppdatering och uppdaterat dataflödet.

Inkrementell uppdatering och länkade tabeller jämfört med beräknade tabeller

För länkade tabeller uppdaterar inkrementell uppdatering källtabellen. Eftersom länkade tabeller bara är en pekare till den ursprungliga tabellen har inkrementell uppdatering ingen inverkan på den länkade tabellen. När källtabellen uppdateras enligt dess definierade uppdateringsprincip bör alla länkade tabeller förutsätta att data i källan uppdateras.

Beräknade tabeller baseras på frågor som körs över ett datalager, vilket kan vara ett annat dataflöde. Därför fungerar beräknade tabeller på samma sätt som länkade tabeller.

Eftersom beräknade tabeller och länkade tabeller fungerar på samma sätt är kraven och konfigurationsstegen desamma för båda. En skillnad är att inkrementell uppdatering inte kan köras på ett optimerat sätt för beräknade tabeller i vissa konfigurationer på grund av hur partitioner skapas.

Ändra mellan inkrementell och fullständig uppdatering

Dataflöden stöder ändring av uppdateringsprincipen mellan inkrementell och fullständig uppdatering. När en ändring sker i endera riktningen (full till inkrementell eller inkrementell till fullständig) påverkar ändringen dataflödet efter nästa uppdatering.

När du flyttar ett dataflöde från fullständig uppdatering till inkrementell uppdaterar den nya uppdateringslogiken dataflödet genom att följa uppdateringsfönstret och öka enligt definitionen i inställningarna för inkrementell uppdatering.

När du flyttar ett dataflöde från inkrementell till fullständig uppdatering skrivs alla data som ackumuleras i den inkrementella uppdateringen över av principen som definieras i den fullständiga uppdateringen. Du måste godkänna den här åtgärden.

Stöd för tidszon i inkrementell uppdatering

Inkrementell dataflödesuppdatering är beroende av den tid då den körs. Filtreringen av frågan är beroende av den dag då den körs.

För att hantera dessa beroenden och säkerställa datakonsekvens implementerar inkrementell uppdatering för dataflöden följande heuristiska för uppdateringsscenarier nu :

  • Om en schemalagd uppdatering definieras i systemet använder inkrementell uppdatering tidszonsinställningarna från avsnittet schemalagd uppdatering. Detta säkerställer att den tidszon som personen som uppdaterar dataflödet befinner sig i alltid överensstämmer med systemets definition.

  • Om ingen schemalagd uppdatering har definierats använder dataflöden tidszonen från datorn för den användare som utför uppdateringen.

Inkrementell uppdatering kan också anropas med hjälp av API:er. I det här fallet kan API-anropet innehålla en tidszonsinställning som används i uppdateringen. Det kan vara bra att använda API:er för testning och validering.

Information om inkrementell uppdateringsimplementering

Dataflöden använder partitionering för inkrementell uppdatering. Inkrementell uppdatering i dataflöden behåller det minsta antalet partitioner för att uppfylla uppdateringsprincipkraven. Gamla partitioner som ligger utom räckhåll tas bort, vilket upprätthåller ett rullande fönster. Partitioner sammanfogas opportunistiskt, vilket minskar det totala antalet partitioner som krävs. Detta förbättrar komprimering och kan i vissa fall förbättra frågeprestanda.

Exemplen i det här avsnittet delar följande uppdateringsprincip:

  • Lagra rader under de senaste 1 kvartalen
  • Uppdatera rader under de senaste 10 dagarna
  • Identifiera dataändringar = Falskt
  • Uppdatera endast fullständiga dagar = Sant

Sammanfoga partitioner

I det här exemplet sammanfogas dagpartitioner automatiskt till månadsnivån när de ligger utanför det inkrementella intervallet. Partitioner i det inkrementella intervallet måste bibehållas med daglig kornighet så att endast dessa dagar kan uppdateras. Uppdateringsåtgärden med Kör datum 12/11/2016 sammanfogar dagarna i november, eftersom de ligger utanför det inkrementella intervallet.

Sammanfoga partitioner i dataflöden.

Ta bort gamla partitioner

Gamla partitioner som ligger utanför det totala intervallet tas bort. Uppdateringsåtgärden med Kör datum 1/2/2017 släpper partitionen för Q3 2016 eftersom den ligger utanför det totala intervallet.

Släpp gamla partitioner i dataflöden.

Återställning från långvarigt fel

I det här exemplet simuleras hur systemet återställs på ett korrekt sätt från ett långvarigt fel. Anta att uppdateringen inte körs eftersom autentiseringsuppgifterna för datakällan har upphört att gälla och att problemet tar 13 dagar att lösa. Det inkrementella intervallet är bara 10 dagar.

Nästa lyckade uppdateringsåtgärd, med Körningsdatum 1/15/2017, måste fylla på de saknade 13 dagarna och uppdatera dem. Den måste också uppdatera de föregående nio dagarna eftersom de inte uppdaterades enligt det normala schemat. Med andra ord ökas det inkrementella intervallet från 10 till 22 dagar.

Nästa uppdateringsåtgärd, med körningsdatum 1/16/2017, tar tillfället i akt att slå samman dagarna i december och månaderna under fjärde kvartalet 2016.

Återställning från långvarigt fel i dataflöden.

Inkrementell dataflödesuppdatering och datauppsättningar

Inkrementell dataflödesuppdatering och inkrementell uppdatering av datauppsättningar är utformade för att fungera tillsammans. Det är acceptabelt och stöds att ha en inkrementell uppdateringstabell i ett dataflöde, fullständigt inläst i en datauppsättning eller en helt inläst tabell i ett dataflöde inkrementellt inläst till en datauppsättning.

Båda metoderna fungerar enligt dina angivna definitioner i uppdateringsinställningarna. Mer information: Inkrementell uppdatering i Power BI Premium

Se även

I den här artikeln beskrivs inkrementell uppdatering för dataflöden. Här är några fler artiklar som kan vara användbara:

Mer information om Power Query och schemalagd uppdatering finns i dessa artiklar:

Mer information om Common Data Model finns i översiktsartikeln: