Dela via


Konfigurera inkrementell uppdatering och realtidsdata

Den här artikeln beskriver hur du konfigurerar inkrementell uppdatering och realtidsdata för semantiska modeller. Mer information om hur du konfigurerar inkrementell uppdatering för dataflöden finns i Premium-funktioner för dataflöden – inkrementell uppdatering.

Att konfigurera inkrementell uppdatering omfattar att skapa parametrarna RangeStart och RangeEnd, tillämpa filter och definiera en inkrementell uppdateringsprincip. När du har publicerat till Power BI-tjänst utför du en första uppdateringsåtgärd för modellen. Den inledande uppdateringsåtgärden och efterföljande uppdateringsåtgärder tillämpar den inkrementella uppdateringsprincip som du definierade. Innan du slutför de här stegen bör du vara säker på att du förstår funktionerna som beskrivs i Inkrementell uppdatering och realtidsdata för semantiska modeller.

Skapa parametrar

I den här uppgiften använder du Power Query-redigeraren för att skapa parametrarna RangeStart och RangeEnd med standardvärden. Standardvärdena gäller endast när du filtrerar data som ska läsas in i modellen i Power BI Desktop. De värden som du anger ska bara innehålla en liten mängd av de senaste data från datakällan. När de publiceras till tjänsten åsidosättas dessa tidsintervallvärden av principen för inkrementell uppdatering. Det innebär att principen skapar fönster med inkommande data, en efter en.

  1. I Power BI Desktop väljer du Transformera data i menyfliksområdet Start för att öppna Power Query-redigeraren.

  2. Välj listrutan Hantera parametrar och välj sedan Ny parameter.

  3. I fältet Namn anger du RangeStart (skiftlägeskänslig). I fältet Typ väljer du Datum/tid i listrutan. I fältet Aktuellt värde anger du ett startdatum- och tidsvärde.

    Define the Range Start parameter in the Manage Parameters dialog.

  4. Välj Ny för att skapa en andra parameter med namnet RangeEnd. I fältet Typ väljer du Datum/tid och anger sedan ett slutdatum och ett tidsvärde i fältet Aktuellt värde . Välj OK.

    Define the Range End parameter in the Manage Parameters dialog.

Nu när du har definierat parametrarna RangeStart och RangeEnd filtrerar du de data som ska läsas in i modellen baserat på dessa parametrar.

Filtrera data

Kommentar

Innan du fortsätter med den här uppgiften kontrollerar du att källtabellen har en datumkolumn med datatypen Datum/tid. Om den inte har en datum/tid-kolumn, men den har en datumkolumn med heltals surrogatnycklar i form av yyyymmdd, följer du stegen i Konvertera DateTime till heltal senare i den här artikeln för att skapa en funktion som konverterar datum-/tidsvärdet i parametrarna för att matcha heltals surrogatnyckeln i källtabellen.

Nu ska du använda ett filter baserat på villkor i parametrarna RangeStart och RangeEnd.

  1. I Power Query-redigeraren väljer du den datumkolumn som du vill filtrera på och väljer sedan listrutepilen >Datumfilter>anpassat filter.

  2. I Filtrera rader, för att ange det första villkoret, väljer du är efter eller är efter eller lika med, väljer sedan Parameter och väljer sedan RangeStart.

    Om du vill ange det andra villkoret, om du har valt efter i det första villkoret, väljer du är före eller lika med, eller om du har valt är efter eller lika med i det första villkoret, väljer du är före för det andra villkoret, väljer sedan Parameter och väljer sedan RangeEnd.

    Filter rows dialog showing Range Start and Range End conditions.

    Viktigt: Kontrollera att frågor har lika med (=) på antingen RangeStart eller RangeEnd, men inte båda. Om det finns lika med (=) på båda parametrarna kan en rad uppfylla villkoren för två partitioner, vilket kan leda till duplicerade data i modellen. Kan till exempel = Table.SelectRows(#"Changed Type", each [OrderDate] >= RangeStart and [OrderDate] <= RangeEnd) resultera i duplicerade data om det finns en OrderDate som är lika med både RangeStart och RangeEnd.

    Välj OK för att stänga.

  3. I menyfliksområdet Start i Power Query-redigeraren väljer du Stäng och tillämpa. Power Query läser in data baserat på de filter som definierats av parametrarna RangeStart och RangeEnd och andra filter som du har definierat.

    Power Query läser bara in data som anges mellan parametrarna RangeStart och RangeEnd. Beroende på mängden data under den perioden bör tabellen läsas in snabbt. Om det verkar långsamt och processintensivt är det troligt att frågan inte viks.

Definiera princip

När du har definierat parametrarna RangeStart och RangeEnd och filtrerat data baserat på dessa parametrar definierar du en inkrementell uppdateringsprincip. Den här principen tillämpas endast efter att modellen har publicerats till tjänsten och en manuell eller schemalagd uppdateringsåtgärd utförs.

  1. Högerklicka på en tabell i fönstret Data i datavyn och välj Inkrementell uppdatering.

    Data view showing Table context menu with Incremental refresh selected.

  2. I Inkrementell uppdatering och realtidsdata>Välj tabell verifierar eller väljer du tabellen. Standardvärdet för listrutan Välj tabell är den tabell som du har valt i datavyn.

  3. Ange nödvändiga inställningar:

    I Ange import- och uppdateringsintervall>Uppdatera tabellen stegvis flyttar du skjutreglaget till På. Om skjutreglaget är inaktiverat innebär det att Power Query-uttrycket för tabellen inte innehåller ett filter baserat på parametrarna RangeStart och RangeEnd.

    I Arkivdata startar anger du den historiska lagringsperiod som du vill inkludera i modellen. Alla rader med datum under den här perioden läses in i modellen i tjänsten, såvida inte andra filter tillämpas.

    I Inkrementell uppdatering av data som startar anger du uppdateringsperioden . Alla rader med datum under den här perioden uppdateras i modellen varje gång en manuell eller schemalagd uppdateringsåtgärd utförs av Power BI-tjänst.

  4. Ange valfria inställningar:

    I Välj valfria inställningar väljer du Hämta de senaste data i realtid med DirectQuery (endast Premium) för att inkludera de senaste dataändringarna som inträffade i datakällan efter den senaste uppdateringsperioden. Den här inställningen gör att principen för inkrementell uppdatering lägger till en DirectQuery-partition i tabellen.

    Välj Uppdatera endast fullständiga dagar om du bara vill uppdatera hela dagar. Om uppdateringsåtgärden identifierar att en dag inte är klar uppdateras inte rader för hela dagen. Det här alternativet aktiveras automatiskt när du väljer Hämta de senaste data i realtid med DirectQuery (endast Premium).

    Välj Identifiera dataändringar för att ange en datum/tid-kolumn som används för att identifiera och uppdatera endast de dagar då data har ändrats. En datum-/tidskolumn måste finnas, vanligtvis i granskningssyfte, i datakällan. Den här kolumnen bör inte vara samma kolumn som används för att partitionera data med parametrarna RangeStart och RangeEnd. Det maximala värdet för den här kolumnen utvärderas för var och en av perioderna i det inkrementella intervallet. Om den inte har ändrats sedan den senaste uppdateringen uppdateras inte den aktuella perioden. För modeller som publicerats till Premium-kapaciteter kan du också ange en anpassad fråga. Mer information finns i Avancerad inkrementell uppdatering – Anpassade frågor för att identifiera dataändringar.

    Beroende på dina inställningar bör principen se ut ungefär så här:

    Incremental refresh and real-time data policy dialog showing incremental refresh range.

  5. Granska inställningarna och välj sedan Använd för att slutföra uppdateringsprincipen. Det här steget läser inte in data.

Spara och publicera till tjänsten

Nu när parametrarna RangeStart och RangeEnd, filtrering och uppdateringsprincip har slutförts sparar du din modell och publicerar sedan till tjänsten. Om din modell blir stor måste du aktivera lagringsformatetFör stor modell innan du anropar den första uppdateringen i tjänsten.

Uppdatera modell

Uppdatera modellen i tjänsten. Den första uppdateringen läser in både nya och uppdaterade data under uppdateringsperioden samt historiska data för hela lagringsperioden. Beroende på mängden data kan den här uppdateringen ta ganska lång tid. Efterföljande uppdateringar, oavsett om de är manuella eller schemalagda, är vanligtvis mycket snabbare eftersom principen för inkrementell uppdatering tillämpas och endast data för perioden som anges i inställningen uppdateringsprincip uppdateras.

Konvertera DateTime till heltal

Den här uppgiften krävs bara om tabellen använder heltals surrogatnycklar i stället för datum/tid-värden i den datumkolumn som du använder för filterdefinitionen RangeStart och RangeEnd.

Datatypen för parametrarna RangeStart och RangeEnd måste vara av datum-/tidsdatatyp oavsett datatyp för datumkolumnen. För många datakällor har tabeller dock inte en kolumn med datatypen datum/tid, utan har i stället en datumkolumn med heltals surrogatnycklar i form av yyyymmdd. Du kan vanligtvis inte konvertera dessa heltals surrogatnycklar till datatypen Datum/tid eftersom resultatet skulle vara ett icke-vikbart frågeuttryck, men du kan skapa en funktion som konverterar datum/tid-värdet i parametrarna för att matcha heltals surrogatnyckeln i datakälltabellen utan att förlora vikningsbarheten. Funktionen anropas sedan i ett filtersteg. Det här konverteringssteget krävs om datakällans tabell endast innehåller en surrogatnyckel som heltalsdatatyp.

  1. I menyfliksområdet Start i Power Query-redigeraren väljer du listrutan Ny källa och väljer sedan Tom fråga.

  2. I Fråga Inställningar anger du ett namn, till exempel DateKey, och i formelredigeraren anger du följande formel:

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

    Power BI function editor showing the integer surrogate DateKey function.

  3. Om du vill testa formeln går du till Ange parameter, anger ett datum/tid-värde och väljer sedan Anropa. Om formeln är korrekt returneras ett heltalsvärde för datumet. När du har verifierat tar du bort den här nya anropade funktionsfrågan .

  4. I Frågor väljer du tabellen och redigerar sedan frågeformeln för att anropa funktionen med parametrarna RangeStart och RangeEnd.

    = Table.SelectRows(#"Reordered Column OrderDateKey", each [OrderDateKey] > DateKey(RangeStart) and [OrderDateKey] <= DateKey(RangeEnd))

    Power BI table showing DateKey filter.