Incrementeel vernieuwen in Power BI PremiumIncremental refresh in Power BI Premium

Is deze pagina nuttig?

Incrementele vernieuwing maakt zeer grote gegevenssets in de Power BI Premium-service mogelijk, met de volgende voordelen:Incremental refresh enables very large datasets in the Power BI Premium service with the following benefits:

  • Vernieuwen gaat sneller: alleen gegevens die zijn gewijzigd, hoeven te worden vernieuwd.Refreshes are faster - Only data that has changed needs to be refreshed. Vernieuw bijvoorbeeld alleen de laatste vijf dagen van een gegevensset van tien jaar.For example, refresh only the last five days of a ten-year dataset.

  • Vernieuwen is betrouwbaarder: het is niet meer nodig om langdurige verbindingen met vluchtige bronsystemen te onderhouden.Refreshes are more reliable - It's no longer 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 configurerenConfigure incremental refresh

Beleid voor incrementele vernieuwing wordt gedefinieerd in Power BI Desktop en toegepast zodra het beleid in de Power BI-service is gepubliceerd.Incremental refresh policies are defined in Power BI Desktop and applied when published to the Power BI service.

Begin door incrementele vernieuwingen in de preview-functies in te schakelen.To start, enable incremental refresh in Preview features.

Opties > Preview-functies

Grote gegevenssets filteren in Power BI DesktopFilter large datasets in Power BI Desktop

Grote gegevenssets met potentieel miljarden rijen passen mogelijk niet in een Power BI Desktop-model omdat het PBIX-bestand meestal is beperkt door de geheugenresources die beschikbaar zijn op de desktop-pc.Large datasets with potentially billions of rows may not fit into a Power BI Desktop model because the PBIX file is limited by the memory resources available on the desktop computer. Dergelijke gegevenssets worden daarom doorgaans gefilterd tijdens de import.Such datasets are therefore commonly filtered upon import. Er wordt op deze manier gefilterd, of er nu gebruik wordt gemaakt van incrementeel vernieuwen of niet.This type of filtering applies whether using incremental refresh or not. Bij incrementeel vernieuwen filtert u op basis van de datum-/tijdparameters van Power Query.For incremental refresh, you filter by using Power Query date/time parameters.

De parameters RangeStart en RangeEndRangeStart and RangeEnd parameters

Als u gebruik wilt maken van incrementele vernieuwing, worden gegevenssets gefilterd op basis van de datum- en tijdparameters van Power Query in combinatie met de gereserveerde, hoofdlettergevoelige namen RangeStart en RangeEnd.For incremental refresh, datasets are filtered by using Power Query date/time parameters with the reserved, case-sensitive names RangeStart and RangeEnd. Deze parameters worden gebruikt om de gegevens die naar Power BI Desktop te worden geïmporteerd te filteren. Ze worden ook gebruikt om de gegevens dynamisch te partitioneren in bereiken nadat ze in de Power BI-service zijn gepubliceerd.These parameters are used to filter the data imported into Power BI Desktop, and also to dynamically partition the data into ranges once published to the Power BI service. De parameterwaarden worden vervangen door de service om op elke partitie te kunnen filteren.The parameter values are substituted by the service to filter for each partition. U hoeft ze niet in te stellen bij de gegevenssetinstellingen in de service.There's no need to set them in dataset settings in the service. Na publicatie worden de parameterwaarden automatisch door de Power BI-service overschreven.Once published, the parameter values are overridden automatically by the Power BI service.

Selecteer Parameters beheren in de Power Query-editor om parameters met standaardwaarden te definiëren.To define the parameters with default values, in the Power Query Editor, select Manage Parameters.

Parameters beheren

Wanneer u de parameters hebt gedefinieerd, kunt u het filter toepassen door de menuoptie Aangepast filter voor een kolom te selecteren.With the parameters defined, you can then apply the filter by selecting the Custom Filter menu option for a column.

Aangepast filter

Zorg ervoor dat rijen worden gefilterd waarbij de kolomwaarde na of gelijk is aan RangeStart en voor RangeEnd.Ensure rows are filtered where the column value is after or equal to RangeStart and before RangeEnd.

Rijen filteren

Tip

Hoewel het gegevenstype van de parameters datum/tijd moet zijn, is het wel mogelijk om ze te converteren zodat ze voldoen aan de vereisten van de gegevensbron.While the data type of the parameters must be date/time, it's possible to convert them to match the requirements of the datasource. De volgende Power Query-functie converteert bijvoorbeeld een datum/tijd-waarde zodat deze overeenkomt met een surrogaatsleutel voor gehele getallen in de indeling jjjjmmdd, die vaker wordt gebruikt voor gegevenswarehouses.For example, the following Power Query function converts a date/time value to resemble an integer surrogate key of the form yyyymmdd, which is common for data warehouses. De functie kan worden aangeroepen door de filterstap.The function can be called by the filter step.

(x as datetime) => Date.Year(x)*10000 + Date.Month(x)*100 + Date.Day(x)

Selecteer Sluiten en toepassen in de Power Query Editor.Select Close and Apply from the Power Query Editor. U moet een subset van de gegevensset in Power BI Desktop hebben.You should have a subset of the dataset in Power BI Desktop.

Filteren op updates in de datumkolomFilter date column updates

Het gegevenskolomfilter wordt in de Power BI-service gebruikt om gegevens dynamisch de partitioneren in bereiken.The filter on the date column is used to dynamically partition the data into ranges in the Power BI service. Incrementeel vernieuwen is niet bedoeld ter ondersteuning van gevallen waarin de gefilterde datumkolom in het bronsysteem wordt bijgewerkt.Incremental refresh isn't designed to support cases where the filtered date column is updated in the source system. Een update wordt beschouwd als een invoeging en een verwijdering en niet als een echte update.An update is interpreted as an insertion and a deletion, not an actual update. Als de verwijdering zich voordoet in het historische bereik en niet in het incrementele bereik, wordt het niet opgepikt.If the deletion occurs in the historical range and not the incremental range, it won’t get picked up. Dit kan leiden tot mislukte pogingen de gegevens te vernieuwen vanwege partitiesleutelconflicten.This can cause data refresh failures due to partition-key conflicts.

Query's vouwenQuery folding

Het is belangrijk dat de partitiefilters naar het bronsysteem wordt gepusht als er query's worden ingediend voor vernieuwingsbewerkingen.It's important the partition filters are pushed to the source system when queries are submitted for refresh operations. Het filteren naar beneden duwen (push down) houdt in dat de gegevensbron ondersteuning moet bieden aan het 'vouwen van query's'.To push filtering down means the datasource should support query folding. De meeste gegevensbronnen die ondersteuning bieden voor SQL-query's, ondersteunen het vouwen van query’s.Most data sources that support SQL queries support query folding. Voor gegevensbronnen zoals platte bestanden, blobs en web- en OData-feeds geldt dat echter doorgaans niet.However, data sources like flat files, blobs, web, and OData feeds typically do not. In gevallen waarin het filter niet wordt ondersteund door de back-end van de gegevensbron, kan deze niet naar beneden worden gepusht.In cases where the filter is not supported by the datasource back-end, it cannot be pushed down. In dergelijke gevallen biedt de mashup-engine compensatie door het filter lokaal toe te passen, waarvoor het nodig kan zijn de volledige gegevensset uit de gegevensbron op te halen.In such cases, the mashup engine compensates and applies the filter locally, which may require retrieving the full dataset from the data source. Hierdoor kan incrementeel vernieuwen traag worden en kan het proces zonder resources komen te zitten, zowel in de Power BI-service als in de on-premises gegevensgateway, indien gebruikt.This can cause incremental refresh to be very slow, and the process can run out of resources either in the Power BI service or in the on-premises data gateway if used.

Gezien de diverse ondersteuningsniveaus voor het vouwen van query's voor elke gegevensbron, wordt u aangeraden te controleren of de filterlogica in de bronquery's is opgenomen.Given the various levels of query folding support for each datasource, it's recommended that verification is performed to ensure the filter logic is included in the source queries. Als u dit eenvoudiger wilt maken, kunt u ook proberen met Power BI Desktop de controle uit te voeren.To make this easier, Power BI Desktop attempts to perform this verification for you. Als er geen controle kan worden uitgevoerd, wordt er in het dialoogvenster Incrementeel vernieuwen een waarschuwing weergegeven bij het definiëren van het beleid voor incrementeel vernieuwen.If unable to verify, a warning is displayed in the incremental refresh dialog when defining the incremental refresh policy. Gegevensbronnen op basis van SQL, zoals SQL Oracle en Teradata, kunnen gebruikmaken van deze waarschuwing.SQL based data sources such as SQL, Oracle, and Teradata can rely on this warning. Mogelijk kunnen andere gegevensbronnen geen controle uitvoeren zonder query's bij te houden.Other data sources may be unable to verify without tracing queries. Als de controle niet met Power BI Desktop kan worden uitgevoerd, wordt de volgende waarschuwing weergegeven.If Power BI Desktop is unable to confirm, the following warning is displayed.

Query's vouwen

Het vernieuwingsbeleid definiërenDefine the refresh policy

Incrementele vernieuwing is beschikbaar in het contextmenu voor tabellen, met uitzondering van liveverbindingsmodellen.Incremental refresh is available on the context menu for tables, except for Live Connection models.

Beleid vernieuwen

Het dialoogvenster Incrementeel vernieuwenIncremental refresh dialog

Het dialoogvenster Incrementele vernieuwing wordt weergegeven.The incremental refresh dialog is displayed. Gebruik de wisselknop om het dialoogvenster in te schakelen.Use the toggle to enable the dialog.

Details vernieuwen

Notitie

Als de Power Query-expressie voor de tabel niet naar de parameters met gereserveerde namen verwijst, wordt de wisselknop uitgeschakeld.If the Power Query expression for the table doesn't refer to the parameters with reserved names, the toggle is disabled.

In de koptekst wordt het volgende uitgelegd:The header text explains the following:

  • Incrementele vernieuwing wordt alleen ondersteund voor werkruimten met Premium-capaciteit.Incremental refresh is supported only for workspaces on Premium capacities. Vernieuwingsbeleid wordt gedefinieerd in Power BI Desktop; het wordt toegepast door vernieuwingsbewerkingen in de service.Refresh policies are defined in Power BI Desktop, and they are applied by refresh operations in the service.

  • Als u het PBIX-bestand met een beleid voor incrementele vernieuwing uit de Power BI-service kunt downloaden, kan het niet worden geopend in Power BI Desktop.If you're able to download the PBIX file containing an incremental-refresh policy from the Power BI service, it cannot be opened in Power BI Desktop. Dit wordt mogelijk in de toekomst wel ondersteund, maar vergeet niet dat deze gegevenssets zo groot kunnen worden dat het niet praktisch is om deze te downloaden en op een gewone desktop-pc te openen.While this may be supported in the future, keep in mind these datasets can grow to be so large that they are impractical to download and open on a typical desktop computer.

Bereiken vernieuwenRefresh ranges

In het volgende voorbeeld wordt vernieuwingsbeleid gedefinieerd voor het opslaan van in totaal vijf jaar aan gegevens plus de gegevens voor het huidige jaar tot aan de huidige datum, met incrementele vernieuwing van tien dagen aan gegevens.The following example defines a refresh policy to store data for five full calendar years plus data for the current year up to the current date, and incrementally refresh ten days of data. Met de eerste vernieuwingsbewerking worden historische gegevens geladen.The first refresh operation loads historical data. De daaropvolgende vernieuwingen zijn incrementeel. Hiermee worden (indien gepland om dagelijks te worden uitgevoerd) de volgende bewerkingen uitgevoerd:Subsequent refreshes are incremental, and (if scheduled to run daily) perform the following operations:

  • Voeg een nieuwe dag aan gegevens toe.Add a new day of data.

  • Vernieuw tien dagen tot aan de huidige datum.Refresh ten 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 1 2019, the year 2013 is removed.

De eerste vernieuwing in de Power BI-service kan langer duren omdat alle vijf volledige kalenderjaren moeten worden geïmporteerd.The first refresh in the Power BI service may take longer to import all five full calendar years. Daarop volgende vernieuwingen kunnen in een fractie van die tijd worden voltooid.Subsequent refreshes may be finished in a fraction of the time.

Bereiken vernieuwen

Notitie

Definitie van deze bereiken is wellicht alles wat u nodig hebt. In dat geval kunt u meteen doorgaan naar de onderstaande publicatiestap.Definition of these ranges might be all you need, in which case you can go straight to the publishing step below. De extra vervolgkeuzelijsten zijn bedoeld voor geavanceerde functies.The additional dropdowns are for advanced features.

Geavanceerde beleidsoptiesAdvanced policy options

Gegevenswijzigingen detecterenDetect data changes

Incrementele vernieuwing van tien dagen is veel efficiënter dan volledige vernieuwing van vijf jaar.Incremental refresh of ten days is more efficient than full refresh of five years. Het kan echter nog beter.However, it's possible to do even better. Als u het selectievakje Gegevenswijzigingen detecteren inschakelt, kunt u een datum/tijd-kolom selecteren voor de identificatie en die alleen wordt vernieuwd als er gegevens zijn gewijzigd.If you select the Detect data changes checkbox, you can select a date/time column used 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. Dit mag niet dezelfde kolom zijn die wordt gebruikt voor het partitioneren van de gegevens met de parameters RangeStart/RangeEnd.This should not be the same column used to partition the data with the RangeStart/RangeEnd parameters. 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 deze nog niet is gewijzigd sinds de laatste vernieuwing, hoeft u de periode niet te vernieuwen.If it 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 ongeveer twee dagen.In the example, this could further reduce the days incrementally refreshed from ten to around two.

Wijzigingen detecteren

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 is 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.

We willen op een later tijdstip de definitie van aangepaste query's voor gegevenswijzigingdetectie toestaan.We plan to allow the definition of custom queries for data-change detection at a later date. Dit kan worden gebruikt om te voorkomen dat de kolomwaarde helemaal wordt behouden.This could be used to avoid persisting the column value altogether.

Alleen volledige perioden vernieuwenOnly refresh complete periods

Stel dat u hebt gepland dat vernieuwing elke ochtend om 4:00 uur wordt uitgevoerd.Let's say your refresh is scheduled to run at 4:00 AM every morning. Als gegevens in die vier uur in het bronsysteem worden weergegeven, wilt u mogelijk dat hier geen rekening mee wordt gehouden.If data appears in the source system during those 4 hours, you may not want to account for it. Some zakelijke metrische gegevens, zoals vaten per dag in de olie- en gasindustrie, zijn niet logisch bij gedeeltelijke dagen.Some business metrics -- such as barrels per day in the oil and gas industry -- make no sense with partial days.

Een ander voorbeeld is het vernieuwen van gegevens in een financieel systeem waar gegevens voor de vorige maand op de 12e kalenderdag van de maand worden goedgekeurd.Another example is refreshing data from 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 u deze optie hebt ingeschakeld, worden bijvoorbeeld de gegevens van januari op 12 februari vernieuwd.With this option checked, it would for example refresh January data on February 12th.

Volledige perioden

Notitie

Vernieuwingsbewerkingen in de service worden in UTC-tijd uitgevoerd.Refresh operations in the service run under UTC time. Dit kan invloed hebben op de ingangsdatum en op volledige perioden.This can determine the effective date and affect complete periods. We zullen de mogelijkheid om de ingangsdatum voor een vernieuwingsbewerking binnenkort toevoegen.We plan to add the ability to override the effective date for a refresh operation.

Publiceren naar de servicePublish to the service

Aangezien incrementele vernieuwing alleen een Premium-functie is, kunt u in het dialoogvenster Publiceren alleen werkruimten selecteren bij de Premium-capaciteit.Since incremental refresh is a Premium only feature, the publish dialog only allows selection of a workspace on Premium capacity.

Publiceren naar de service

U kunt het model nu vernieuwen.You can now refresh the model. De eerste vernieuwing kan langer duren omdat de historische gegevens moeten worden geïmporteerd.The first refresh may take longer to import the historical data. Daarop volgende vernieuwingen kunnen veel sneller worden uitgevoerd omdat hiervoor incrementele vernieuwing wordt gebruikt.Subsequent refreshes can be much quicker because they use incremental refresh.

Time-outs voor query’sQuery timeouts

In het artikel Problemen met vernieuwing oplossen wordt uitgelegd dat vernieuwingsbewerkingen in de Power BI-service onderhevig zijn aan time-outs.The troubleshooting refresh article explains that refresh operations in the Power BI service are subject to timeouts. Voor query's kan ook de standaardtime-out voor de gegevensbron worden ingesteld.Queries can also be limited by the default timeout for the data source. De meeste relationele bronnen staan het overschrijven van time-outs in de M-expressie toe.Most relational sources allow overriding timeouts in the M expression. De onderstaande expressie gebruikt bijvoorbeeld de SQL Server-functie voor toegang tot gegevens om dit op twee uur in te stellen.For example, the expression below uses the SQL Server data-access function to set it to 2 hours. Elke periode die door de beleidsbereiken wordt gedefinieerd, stuurt een query in waarbij rekening wordt gehouden met de time-outinstelling voor de opdracht.Each period defined by the policy ranges submits a query observing the command timeout setting.

let
    Source = Sql.Database("myserver.database.windows.net", "AdventureWorks", [CommandTimeout=#duration(0, 2, 0, 0)]),
    dbo_Fact = Source{[Schema="dbo",Item="FactInternetSales"]}[Data],
    #"Filtered Rows" = Table.SelectRows(dbo_Fact, each [OrderDate] >= RangeStart and [OrderDate] < RangeEnd)
in
    #"Filtered Rows"

BeperkingenLimitations

Op dit moment wordt incrementeel vernieuwen voor samengestelde modellen alleen ondersteund voor gegevensbronnen van SQL Server, Azure SQL Database, SQL Data Warehouse, Oracle en Teradata.Currently, for composite models, incremental refresh is supported for SQL Server, Azure SQL Database, SQL Data Warehouse, Oracle, and Teradata data sources only.