Incrementeel vernieuwen gebruiken met Power BI-gegevensstromenUsing incremental refresh with Power BI dataflows

Met behulp van gegevensstromen kunt u grote hoeveelheden gegevens in Power BI gebruiken om overtuigende rapporten en analyses te maken.With dataflows, you can bring large amounts of data into Power BI to create compelling reports and analytics. In sommige gevallen is het echter niet praktisch een volledige kopie van alle brongegevens bij elke vernieuwing bij te werken.In some cases, however, it's not practical to update a full copy of source data in each refresh. Een goed alternatief is incrementeel vernieuwen, dat de volgende voordelen voor gegevensstromen biedt:A good alternative is incremental refresh, which provides the following benefits for dataflows:

  • Vernieuwen gaat sneller: alleen gegevens die zijn gewijzigd, hoeven te worden vernieuwd.Refresh occurs faster - only data that's changed needs to be refreshed. Vernieuw bijvoorbeeld alleen de laatste vijf dagen van een gegevensstroom van tien jaar.For example, refresh only the last five days of a 10-year dataflow.
  • Vernieuwen is betrouwbaarder: het is bijvoorbeeld niet nodig om langdurige verbindingen met vluchtige bronsystemen te onderhouden.Refresh is more reliable - for example, it is not necessary to maintain long-running connections to volatile source systems.
  • Verbruik van resources is lager: als er minder gegevens zijn om te vernieuwen, wordt het algemene verbruik van geheugen en andere resources verlaagd.Resource consumption is reduced - less data to refresh reduces overall consumption of memory and other resources.

Incrementeel vernieuwen voor gegevensstromen

Met incrementeel vernieuwen voor Power BI-gegevensstromen moet de werkruimte waarin zich de gegevensstroom bevindt, in Premium-capaciteit zijn om te worden uitgevoerd, en de gegevensbron die in de gegevensstroom is opgenomen, moet een veld Datum/tijd hebben waarop voor incrementeel vernieuwen kan worden gefilterd.Using incremental refresh for Power BI dataflows requires that the workspace where the dataflow resides be in Premium capacity to run, and the data source ingested into the dataflow must have a datetime field on which incremental refresh can filter.

Incrementeel vernieuwen voor gegevensstromen configurerenConfiguring incremental refresh for dataflows

Een gegevensstroom kan veel entiteiten bevatten.A dataflow can contain many entities. Incrementeel vernieuwen wordt ingesteld op entiteitsniveau, zodat één gegevensstroom zowel volledig vernieuwde als incrementeel vernieuwde entiteiten kan bevatten.Incremental refresh is set up at the entity level, allowing one dataflow to hold both fully refreshed entities and incrementally refreshed entities.

Als u een incrementeel vernieuwde entiteit wilt instellen, configureert u eerst uw entiteit zoals u dat met elke andere entiteit zou doen.To set up an incremental refreshed entity, start by configuring your entity as you would any other entity. Zie Self-service data prep in Power BI (Selfservice voor gegevensvoorbereiding in Power BI) voor meer informatie over het instellen van gegevensstromen.To learn more about dataflow set up, see Self-service data prep in Power BI.

Als de gegevensstroom is gemaakt en opgeslagen, selecteert u het pictogram incrementeel vernieuwen in de entiteitsweergave, zoals u in de volgende afbeelding kunt zien:Once the dataflow is created and saved, select the incremental refresh icon in the entity view, as shown in the following image:

Pictogram Incrementeel vernieuwen voor gegevensstromen

Als u op het pictogram klikt, verschijnt het venster Instellingen voor incrementeel vernieuwen.When you click the icon, the Incremental refresh settings window appears. Als u de schuifregelaar op Aan instelt, kunt u incrementeel vernieuwen configureren.When you toggle incremental refresh to the On position, you can configure your incremental refresh.

Incrementeel vernieuwen voor gegevensstromen

In de volgende lijst worden de instellingen in het venster Instellingen voor incrementeel vernieuwen uitgelegd.The following list explains the settings in the Incremental refresh settings window.

  1. Wisselknop om incrementeel vernieuwen in of uit te schakelen: met deze schuifregelaar kunt u beleid voor incrementeel vernieuwen voor de hele entiteit in of uitschakelenIncremental refresh on/off toggle – this slider toggles incremental refresh policy on/off for the entity

  2. Vervolgkeuzelijst met te filteren velden: hiermee selecteert u het queryveld waarop de entiteit voor toenames moet worden gefilterd.Filter field drop down – selects the query field on which the entity should be filtered for increments. Dit veld bevat alleen Datum/tijd-velden.This field only contains datetime fields. U kunt incrementeel vernieuwen niet gebruiken als uw entiteit geen veld Datum/tijd bevat.You cannot use incremental refresh if your entity doesn’t contain a datetime field.

  3. Rijen opslaan van de afgelopen: in het volgende voorbeeld worden de volgende instellingen uitgelegd.Store rows from the past – the following example helps explain the next few settings.

    In dit voorbeeld wordt een vernieuwingsbeleid gedefinieerd voor het opslaan van in totaal vijf jaar aan gegevens, met incrementele vernieuwing van tien dagen aan gegevens.For this example, we define a refresh policy to store five years of data in total, and incrementally refresh 10 days of data. Als de entiteit dagelijks wordt vernieuwd, wordt het volgende uitgevoerd voor elke vernieuwingsbewerking:If the entity is refreshed daily, the following is carried out for each refresh operation:

    • Voeg een nieuwe dag aan gegevens toe.Add a new day of data.
    • Vernieuw tien dagen tot aan de huidige datum.Refresh 10 days up to the current date.
    • Verwijder kalenderjaren die ouder zijn dan vijf jaar voorafgaand aan de huidige datum.Remove calendar years that are older than five years prior to the current date. Als de huidige datum bijvoorbeeld 1 januari 2019 is, wordt het jaar 2013 verwijderd.For example, if the current date is January 1st 2019, the year 2013 is removed.

    De eerste vernieuwing van een gegevensstroom kan enige tijd in beslag nemen omdat alle vijf jaren moeten worden geïmporteerd, maar de volgende vernieuwingen worden waarschijnlijk in een fractie van deze initiële periode uitgevoerd.The first dataflow refresh may take a while to import all five years, but subsequent refreshes are likely to complete in a small fraction of the initial refresh time.

  4. Gegevenswijzigingen detecteren: het incrementeel vernieuwen van tien dagen is veel efficiënter dan een volledige vernieuwing van vijf jaar, maar het kan nog beter.Detect data changes - Incremental refresh of 10 days is much more efficient than full refresh of 5 years, but we may be able to do even better. Als u het selectievakje Gegevenswijzigingen detecteren inschakelt, kunt u een Datum/tijd-kolom selecteren om alleen die dagen te identificeren en vernieuwen waarvoor gegevens zijn gewijzigd.When you select the Detect data changes checkbox, you can select a date/time column to identify and refresh only the days where the data has changed. Hierbij wordt ervan uitgegaan dat een dergelijke kolom in het bronsysteem bestaat, wat gebruikelijk is voor controledoeleinden.This assumes such a column exists in the source system, which is typically for auditing purposes. De maximumwaarde van deze kolom wordt geëvalueerd voor elke periode in het incrementele bereik.The maximum value of this column is evaluated for each of the periods in the incremental range. Als die gegevens nog niet zijn gewijzigd sinds de laatste vernieuwing, hoeft u de periode niet te vernieuwen.If that data has not changed since the last refresh, there is no need to refresh the period. In het voorbeeld kan hiermee het aantal dagen dat wordt vernieuwd nog eens verder worden beperkt van tien tot misschien twee dagen.In the example, this could further reduce the days incrementally refreshed from 10 to perhaps two.

Tip

Voor het huidige ontwerp moet de kolom die gegevenswijzigingen detecteert persistent zijn en in het cachegeheugen worden geplaatst.The current design requires that the column to detect data changes be persisted and cached into memory. U kunt overwegen een van de volgende technieken te gebruiken om de kardinaliteit en het geheugenverbruik te beperken:You may want to consider one of the following techniques to reduce cardinality and memory consumption:

  • Behoud alleen de maximumwaarde van deze kolom op het moment van de vernieuwing, bijvoorbeeld met behulp van een Power Query-functie.Persist only the maximum value of this column at time of refresh, perhaps using a Power Query function.
  • Beperk de nauwkeurigheid naar een niveau dat acceptabel is gezien uw vereisten voor de vernieuwingsfrequentie.Reduce the precision to a level that is acceptable given your refresh-frequency requirements.
  1. Alleen volledige perioden vernieuwen: stel dat de vernieuwing gepland staat voor elke ochtend om vier uur.Only refresh complete periods - imagine your refresh is scheduled to run at 4:00 AM every morning. Als er die eerste vier uur van die dag gegevens in het bronsysteem worden weergegeven, wilt u mogelijk dat hier geen rekening mee wordt gehouden.If data appears in the source system during those first four hours of that day, you may not want to account for it. Voor sommige metrische bedrijfsgegevens, zoals het aantal vaten per dag in de olie- en gasindustrie, is het niet praktisch of zinnig dat hiermee rekening wordt gehouden op basis van een deel van de dag.Some business metrics, such as barrels per day in the oil and gas industry, are not practical or sensible to account for based on partial days.

    Een ander voorbeeld waarbij alleen het vernieuwen van volledige perioden passend is, is het vernieuwen van gegevens van een financieel systeem.Another example where only refreshing complete periods is appropriate is refreshing data from a financial system. Bijvoorbeeld een financieel systeem waar gegevens voor de vorige maand op de twaalfde kalenderdag van de maand worden goedgekeurd.Imagine a financial system where data for the previous month is approved on the 12th calendar day of the month. U kunt het incrementele bereik instellen op 1 maand en de vernieuwing plannen op de twaalfde dag van de maand.You could set the incremental range to 1 month and schedule the refresh to run on the 12th day of the month. Als deze optie is aangevinkt, worden de gegevens van januari (de recentste, volledige periode van een maand) vernieuwd op 12 februari.With this option checked, it would refresh January data (the most recent complete monthly period) on February 12th.

Notitie

Incrementeel vernieuwen voor gegevensstromen stelt datums vast op basis van de volgende logica: als er een vernieuwing wordt gepland, maakt incrementeel vernieuwen voor gegevensstromen gebruik van de tijdzone die in het vernieuwingsbeleid is gedefinieerd.Dataflow incremental refresh determines dates according to the following logic: if a refresh is scheduled, incremental refresh for dataflows uses the time-zone defined in the refresh policy. Als er geen schema voor vernieuwing bestaat, maakt incrementeel vernieuwen gebruik van de tijd van de computer die het vernieuwen uitvoert.If no schedule for refreshing exists, incremental refresh uses the time from the machine running the refresh.

De query voor incrementeel vernieuwenThe incremental refresh query

Zodra incrementeel vernieuwen is geconfigureerd, wordt in de query automatisch filteren op datum opgenomen.Once incremental refresh is configured, the dataflow automatically alters your query to include filter by date. U kunt de automatisch gegenereerde query bewerken met de geavanceerde editor van Power Query om het vernieuwen af te stellen of aan te passen.You can edit the auto-generated query using the Advanced Power Query Editor to fine-tune or customize your refresh. Lees in de volgende sectie meer over incrementeel vernieuwen en hoe het werkt.Read more about incremental refresh and how it works in the following section.

Incrementeel vernieuwen en gekoppelde versus berekende entiteitenIncremental refresh and linked versus computed entities

Bij gekoppelde entiteiten wordt de bronentiteit bijgewerkt door middel van incrementeel vernieuwen.For linked entities, incremental refresh updates the source entity. Omdat gekoppelde entiteiten niet meer zijn dan verwijzers naar de oorspronkelijke entiteit, is incrementeel vernieuwen niet van invloed op de gekoppelde entiteit.Since linked entities are simply a pointer to the original entity, incremental refresh has no impact on the linked entity. Als de bronentiteit wordt vernieuwd volgens het gedefinieerde vernieuwingsbeleid, wordt ervan uitgegaan dat de gegevens in de bron zijn vernieuwd.When the source entity refreshes according to its defined refresh policy, any linked entity should assume the data in the source is refreshed.

Berekende entiteiten zijn gebaseerd op query's die worden uitgevoerd via een gegevensopslag, die een andere gegevensstroom kan zijn.Computed entities are based on queries running over a datastore, which may be another dataflow. Berekende entiteiten gedragen zich dus op dezelfde manier als gekoppelde entiteiten.As such, computed entities behave in the same way as linked entities.

Omdat berekende entiteiten en gekoppelde entiteiten zich soortgelijk gedragen, zijn de vereisten en configuratiestappen voor beide dezelfde.Since computed entities and linked entities behave similarly, the requirements and configuration steps are the same for both. Een van de verschillen is dat bij berekende entiteiten het incrementeel vernieuwen bij bepaalde configuraties niet optimaal kan worden uitgevoerd vanwege de manier waarop partities zijn gebouwd.One difference is that for computed entities, in certain configurations, incremental refresh cannot run in an optimized fashion due to the way partitions are built.

Wisselen tussen incrementele en volledig vernieuwenChanging between incremental and full refresh

Gegevensstromen bieden ondersteuning voor het wijzigen van het vernieuwingsbeleid van incrementeel in volledig vernieuwen en omgekeerd.Dataflows support changing refresh policy between incremental and full refresh. Als er een wijziging optreedt (van incrementeel naar volledig vernieuwen of omgekeerd) is de wijziging na de volgende vernieuwing van invloed op de gegevensstroom.When a change occurs in either direction (full to incremental, or incremental to full refresh), the change impacts the dataflow after the next refresh.

Als voor een gegevensstroom incrementeel in plaats van volledig vernieuwen wordt toegepast, wordt de gegevensstroom bijgewerkt met de nieuwe vernieuwingslogica. Hierbij wordt rekening gehouden met het vernieuwingsvenster en de mate van toename, zoals gedefinieerd in de instellingen voor incrementeel vernieuwen.When moving a dataflow from full refresh to incremental, the new refresh logic updates the dataflow adhering to the refresh window and increment as defined in the incremental refresh settings.

Als voor een gegevensstroom volledig in plaats van incrementeel vernieuwen wordt toegepast, worden alle gegevens die zich in het incrementeel vernieuwen hebben verzameld, overschreven door het beleid dat in het volledig vernieuwen is gedefinieerd.When moving a dataflow from incremental to full refresh, all data accumulated in incremental refresh is overwritten by the policy defined in full refresh. U dient deze actie goed te keuren.You must approve this action.

Incrementeel vernieuwen van gegevensstromen en gegevenssetsDataflow incremental refresh and datasets

Het incrementeel vernieuwen van gegevensstromen en gegevenssets worden naast elkaar uitgevoerd.Dataflow incremental refresh and dataset incremental refresh are designed to work in tandem. De aanwezigheid van een entiteit voor incrementeel vernieuwen in een gegevensstroom is toegestaan en wordt ondersteund - volledig geladen in een gegevensset of een volledig geladen entiteit in een gegevensstroom die incrementeel in een gegevensset is geladen.It is acceptable and supported to have an incrementally refreshing entity in a dataflow, fully loaded into a dataset, or a fully loaded entity in dataflow incrementally loaded to a dataset.

Beide benaderingen zijn overeenkomstig de door u opgegeven definities in de vernieuwingsinstellingen.Both approaches according to your specified definitions in the refresh settings. U kunt meer lezen over incrementeel vernieuwen in Incrementeel vernieuwen in Power BI Premium.You can read more about incremental refresh in incremental refresh in Power BI Premium.

Ondersteuning van tijdzones in incrementeel vernieuwenTime zone support in incremental refresh

Incrementeel vernieuwen van gegevensstromen is afhankelijk van de tijd waarin deze wordt uitgevoerd.Dataflow incremental refresh is dependent on the time in which it is run. Het filteren van de query is afhankelijk van de dag waarop deze wordt uitgevoerd.The filtering of the query is dependent on the day it runs.

Om die afhankelijkheden in overeenstemming te brengen en te zorgen voor consistentie van gegevens, implementeert incrementeel vernieuwen voor gegevensstromen de volgende heuristiek voor scenario's met nu vernieuwen:To accommodate those dependencies and to ensure data consistency, incremental refresh for dataflows implements the following heuristic for refresh now scenarios:

  • In het geval waarbij een geplande vernieuwing in het systeem wordt gedefinieerd, maakt incrementeel vernieuwen gebruik van de tijdzone-instellingen van het vernieuwingsschema.In the case where a scheduled refresh is defined in the system – incremental refresh uses the timezone settings from the schedule refresh. Dit garandeert dat ongeacht de tijdzone waarin iemand zich bevindt die de datastroom vernieuwt, deze altijd consistent is met de definitie in het systeem.This ensures that whatever timezone the person refreshing the dataflow is in, it will always be consistent with the system’s definition.

  • Als er geen geplande vernieuwing is gedefinieerd, maakt de gegevensstroom gebruik van de tijdzone van de computer van degene die de vernieuwing uitvoert.If no schedule refresh is defined, dataflows use the timezone of the refreshing user’s computer.

Incrementeel vernieuwen kan ook met behulp van API's worden aangeroepen.Incremental refresh may also be invoked using APIs. In zo'n geval kan de API-aanroep zich aan een tijdzone houden die bij het vernieuwen wordt gebruikt.in this case, the API call may hold a timezone setting that is used in the refresh. Het gebruik van API's kan handig zijn bij test- en valideringsdoeleinden.Using APIs can be helpful for testing and validation purposes.

Details van de implementatie van incrementeel vernieuwenIncremental refresh implementation details

Gegevensstromen maken gebruik van partitionering voor incrementeel vernieuwen.Dataflows use partitioning for incremental refresh. Zodra er XMLA-eindpunten voor Power BI Premium beschikbaar zijn, worden de partities zichtbaar.Once XMLA-endpoints for Power BI Premium are available, the partitions become visible. Bij incrementeel vernieuwen in gegevensstromen blijft het minimum aantal partities behouden om aan de vereisten van het vernieuwingsbeleid te voldoen.Incremental refresh in dataflows retains the minimum number of partitions to meet refresh policy requirements. Oude partities die buiten bereik raken, worden verwijderd, waardoor een lopende telling gehandhaafd blijft.Old partitions that go out of range are dropped, maintaining a rolling window. Partities worden op opportunistische wijze samengevoegd, zodat het totaal aantal vereiste partities wordt verminderd.Partitions are opportunistically merged, reducing the total number of partitions required. Dit verbetert de compressie en in sommige gevallen ook de prestaties van de query's.This improves compression and, in some cases, can improve query performance.

De voorbeelden in deze sectie kennen alle het volgende vernieuwingsbeleid:The examples in this section share the following refresh policy:

  • Rijen opslaan in het afgelopen kwartaalStore rows in the last 1 Quarter
  • Rijen vernieuwen in de afgelopen tien dagenRefresh rows in the last 10 Days
  • Gegevenswijzigingen detecteren = OnwaarDetect data changes = False
  • Alleen volledige dagen vernieuwen = WaarOnly refresh complete days = True

Partities samenvoegenMerge partitions

In dit voorbeeld worden dagpartities automatisch samengevoegd tot maandniveau zodra ze buiten het incrementele bereik vallen.In this example, day partitions are automatically merged to the month level once they go outside the incremental range. Partities binnen het incrementele bereik moeten worden onderhouden in dagelijkse samenvattingen zodat alleen die dagen worden vernieuwd.Partitions in the incremental range need to be maintained at daily granularity to allow only those days to be refreshed. Met de vernieuwing met uitvoerdatum 11-12-2016 worden de dagen in november samengevoegd, omdat ze buiten het incrementele bereik vallen.The refresh operation with Run Date 12/11/2016 merges the days in November, because they fall outside the incremental range.

Partities in gegevensstromen samenvoegen

Oude partities verwijderenDrop old partitions

Oude partities die buiten het totale bereik vallen, worden verwijderd.Old partitions that fall outside the total range are removed. Met de vernieuwing met uitvoerdatum 2-1-2017 wordt de partitie voor het derde kwartaal van 2016 verwijderd, omdat deze buiten het totale bereik valt.The refresh operation with Run Date 1/2/2017 drops the partition for Q3 2016 because it falls outside the total range.

Oude partities in gegevensstromen

Herstel van langdurige foutenRecovery from prolonged failure

In dit voorbeeld wordt gesimuleerd hoe het systeem probleemloos van langdurige fouten herstelt.This example simulates how the system recovers gracefully from prolonged failure. Stel dat het vernieuwen niet lukt omdat de referenties van de gegevensbron zijn verlopen en het oplossen van het probleem dertien dagen duurt.Let's say refresh doesn't run successfully because data source credentials expired, and the issue takes 13 days to resolve. Het incrementele bereik is slechts tien dagen.The incremental range is only 10 days.

De volgende geslaagde vernieuwing, met uitvoerdatum 15-1-2017, moet de ontbrekende dertien dagen opvullen en vernieuwen.The next successful refresh operation, with Run Date 1/15/2017, needs to backfill the missing 13 days and refresh them. Ook de afgelopen negen dagen moeten worden vernieuwd, omdat ze niet vernieuwd zijn volgens het normale schema.It also needs to refresh the previous 9 days because they were not refreshed on the normal schedule. Met andere woorden: het incrementele bereik wordt verhoogd van 10 naar 22 dagen.In other words, the incremental range is increased from 10 to 22 days.

Bij de volgende vernieuwing, met uitvoerdatum 16-1-2017, worden de dagen in december en die van de maanden van het vierde kwartaal van 2016 samengevoegd.The next refresh operation, with Run Date 1/16/2017, takes the opportunity to merge the days in December and the months in the Q4 2016.

Herstel van langdurige fouten in gegevensstromen

Volgende stappenNext Steps

In dit artikel is incrementeel vernieuwen voor gegevensstromen beschreven.This article described incremental refresh for dataflows. Hier volgen nog enkele artikelen die misschien nuttig zijn.Here are some more articles that might be useful.

U kunt de volgende artikelen lezen voor meer informatie over Power Query en geplande vernieuwing:For more information about Power Query and scheduled refresh, you can read these articles:

U kunt het overzichtsartikel lezen voor meer informatie over Common Data Model:For more information about the Common Data Model, you can read its overview article: