Konfigurera inkrementell uppdatering

I den här artikeln beskrivs hur du konfigurerar inkrementell uppdatering för datauppsättningar. Mer information om hur du konfigurerar inkrementell uppdatering för dataflöden finns Premium funktioner i dataflöden – inkrementell uppdatering.

Att konfigurera inkrementell uppdatering omfattar att skapa parametrarna RangeStart och RangeEnd, tillämpa filter och definiera en princip för inkrementell uppdatering. När du har publicerat till tjänsten utför du en inledande uppdateringsåtgärd på datauppsättningen. Den första uppdateringsåtgärden och efterföljande uppdateringsåtgärder tillämpar den princip för inkrementell uppdatering som du definierade. Innan du slutför de här stegen måste du vara helt medveten om funktionerna som beskrivs i Inkrementell uppdatering för datauppsättningar.

Skapa parametrar

I den här uppgiften använder Power Query Editor 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 bör endast innehålla små mängder av de senaste data från datakällan. När de publiceras till tjänsten åsidosätts dessa värden av principen för inkrementell uppdatering.

  1. I Power BI Desktop du på Transformera data för att öppna Power Query redigeraren.

  2. Klicka på Hantera parametrar Ny > parameter.

  3. I Hantera > parameternamn skriver du RangeStart (case sensitive) och i Typ väljer du Datum/tid och anger sedan ett startdatum/tid-värde i Aktuellt värde.

    Definiera startparametern för intervall i dialogrutan Hantera parametrar

  4. Skapa en andra parameter med namnet RangeEnd. I Typ väljer du Datum/tid och i Aktuellt värde anger du sedan ett slutdatum/tidsvärde.

    Definiera parametern Range End i dialogrutan Hantera parametrar

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

Filtrera data

Anteckning

Innan du fortsätter med den här uppgiften kontrollerar du att källtabellen har en datumkolumn med datatypen Datum/tid. Om inte, men har en datumkolumn med heltals surrogatnycklar i form av 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 yyyymmdd heltals surrogatnyckeln för källtabellen.

När parametrarna RangeStart och RangeEnd har definierats tillämpar du ett filter baserat på villkor i parametrarna RangeStart och RangeEnd.

  1. I Power Query Editor väljer du den datumkolumn som du vill filtrera på och klickar sedan på filterikonen för > anpassat filter för datum/tid. >

  2. I Filtrera rader anger du det första villkoret genom att välja är efter eller är efter eller lika med . Välj sedan Parameter och välj sedan RangeStart.

    Om du vill ange det andra villkoret, om du har valt är 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 is before för det andra villkoret och väljer sedan Parameter och sedan RangeEnd. Exempel:

    Filtrera rader

    Viktigt: Kontrollera att frågorna har ett likhetsvärde (=) på antingen RangeStart eller RangeEnd, men inte båda. Om det finns ett likhetstecken (=) i båda parametrarna kan en rad uppfylla villkoren för två partitioner, vilket kan leda till duplicerade data i modellen. Till exempel kan #"Filtered Rows" = Table.SelectRows(dbo_Fact, each [OrderDate] >= RangeStart and [OrderDate] <= RangeEnd) resultera i duplicerade data.

    Stäng genom att klicka på OK.

  3. I Power Query Editor klickar du på Stäng & Tillämpa. Power Query sedan in data baserat på de filter som definierats i parametrarna RangeStart och RangeEnd och eventuella 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 inläsningen gå snabbt. Om det verkar långsamt och processintensivt är det troligt att frågan inte vikning.

Definiera princip

När du har definierat parametrarna RangeStart och RangeEnd och filtrerat data baserat på dessa parametrar definierar du en princip för inkrementell uppdatering. Principen tillämpas först när modellen har publicerats till tjänsten och en manuell eller schemalagd uppdatering utförs.

  1. I datavyn > Fält > du snabbmenyn för tabellen och klickar sedan på Inkrementell uppdatering.

    Snabbmeny för tabell

  2. I Inkrementell > uppdateringstabell kontrollerar eller markerar du tabellen och klickar sedan på skjutreglaget Inkrementell uppdatering till På. Om skjutreglaget är inaktiverat innebär det Power Query uttrycket för tabellen inte innehåller något filter baserat på parametrarna RangeStart och RangeEnd.

  3. I Lagra rader där kolumnen "columnname" finns i det sista: anger du den historiska lagringsperiod som du vill inkludera i datauppsättningen. Alla rader med datum under den här perioden läses in i datauppsättningen i tjänsten, såvida inte andra filter gäller.

  4. I Uppdatera rader där kolumnen "columnname" finns i den sista: anger du uppdateringsperioden. Alla rader med datum i den här perioden uppdateras i datauppsättningen varje gång en manuell eller schemalagd uppdatering utförs.

    Dialogrutan Uppdatera princip

  5. Välj valfria inställningar:

    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. Det måste finnas en datum-/tidskolumn, vanligtvis i granskningssyfte, på datakällan. Det får inte vara samma kolumn som används för att partitionera data med parametrarna RangeStart och RangeEnd. Maxvärdet i den här kolumnen utvärderas för varje period i det inkrementella intervallet. Om den inte har ändrats sedan den senaste uppdateringen uppdateras inte den aktuella perioden. För datauppsättningar som publicerats 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.

    Välj Uppdatera endast fullständiga dagar om du bara vill uppdatera hela dagar. Om uppdateringsåtgärden upptäcker att en dag inte är slutförd uppdateras inte raderna för den dagen.

  6. Klicka på Tillämpa alla för att slutföra uppdateringsprincipen. Källdata läses inte in med det här steget.

Spara och publicera till tjänsten

När parametrarna RangeStart och RangeEnd, filtrering och uppdatering är klara ska du spara din modell och sedan publicera den till tjänsten. Om datauppsättningen blir stor måste du aktivera lagringsformatet För stora datauppsättningar innan du aktiverar den första uppdateringen i tjänsten.

Uppdatera datauppsättning

Uppdatera datauppsättningen 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 det ta lång tid. Efterföljande uppdateringar, antingen manuella eller schemalagda, går vanligtvis mycket snabbare eftersom principen för inkrementell uppdatering tillämpas och endast data för den period som anges i principinställningen uppdateras.

Konvertera DateTime till heltal

Den här uppgiften är valfri.

Datatypen för parametrarna RangeStart och RangeEnd måste vara av datatypen datum/tid. För många datakällor har dock tabeller inte en kolumn med datatypen datum/tid utan har i stället en datumkolumn med heltals surrogatnycklar i form av yyyymmdd . Du kan skapa en funktion som konverterar datum-/tidsvärdet i parametrarna så att det matchar heltals surrogatnyckeln för datakälltabellen. Funktionen anropas sedan i ett filtersteg. Det här steget krävs om datakälltabellen endast innehåller en surrogatnyckel som heltalsdatatyp.

  1. I Power Query Editor klickar du på Hämta data > Tom fråga.

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

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

    Skapa Funktionen DateKey

  3. Testa formeln genom att i Ange parameter ange ett datum-/tidsvärde och sedan klicka på Anropa. Om formeln är korrekt returneras ett heltalsvärde för datumet. När du har verifierat tar du bort den 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. Exempel:

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

    Använda DateKey-filter

Se även

Felsöka konfigurering av inkrementell uppdatering
Avancerad inkrementell uppdatering med XMLA-slutpunkten
Konfigurera schemalagd uppdatering