Konfigurere trinnvis oppdatering og sanntidsdata

Denne artikkelen beskriver hvordan du konfigurerer trinnvis oppdatering og sanntidsdata for semantiske modeller. Hvis du vil lære mer om hvordan du konfigurerer trinnvis oppdatering for dataflyter, kan du se Premium-funksjoner i dataflyter – trinnvis oppdatering.

Konfigurering av trinnvis oppdatering inkluderer oppretting av RangeStart- og RangeEnd-parametere, bruk av filtre og definering av en policy for trinnvis oppdatering. Når du har publisert til Power Bi-tjeneste, utfører du en første oppdateringsoperasjon på modellen. Den første oppdateringsoperasjonen og etterfølgende oppdateringsoperasjoner bruker policyen for trinnvis oppdatering du definerte. Før du fullfører disse trinnene, må du være sikker på at du forstår funksjonaliteten som er beskrevet i trinnvis oppdatering og sanntidsdata for semantiske modeller.

Opprett parametere

I denne oppgaven skal du bruke Power Query-redigering til å opprette RangeStart- og RangeEnd-parametere med standardverdier. Standardverdiene gjelder bare når du filtrerer dataene som skal lastes inn i modellen i Power BI Desktop. Verdiene du angir, bør bare inneholde en liten mengde av de nyeste dataene fra datakilden. Når de publiseres til tjenesten, overstyres disse tidsintervallverdiene av policyen for trinnvis oppdatering. Dette er, policyen oppretter vinduer med innkommende data, den ene etter den andre.

  1. Velg Transformer dataHjem-båndet i Power BI Desktop for å åpne Power Query-redigering.

  2. Velg rullegardinlisten Behandle parametere, og velg deretter Ny parameter.

  3. Skriv inn RangeStart (skiller mellom store og små bokstaver) i Navn-feltet. Velg Dato/klokkeslett fra rullegardinlisten i Type-feltet. Angi en startdato- og klokkeslettverdi i Gjeldende verdi-feltet.

    Define the Range Start parameter in the Manage Parameters dialog.

  4. Velg Ny for å opprette en annen parameter med navnet RangeEnd. Velg Dato/klokkeslett i Type-feltet, og angi deretter en sluttdato- og klokkeslettverdi i Gjeldende verdi-feltet. Velg OK.

    Define the Range End parameter in the Manage Parameters dialog.

Nå som du har definert RangeStart- og RangeEnd-parameterne, filtrerer du dataene som skal lastes inn i modellen basert på disse parameterne.

Filtrer data

Merk

Før du fortsetter med denne oppgaven, må du kontrollere at kildetabellen har en datokolonne med datatypen Dato/klokkeslett. Hvis den ikke har en Dato/klokkeslett-kolonne, men den har en datokolonne med heltallssurrogatnøkler i form av yyyymmdd, følger du trinnene i Konverter DateTime til heltall senere i denne artikkelen for å opprette en funksjon som konverterer dato/klokkeslett-verdien i parameterne for å samsvare med heltallssurrogatnøkkelen i kildetabellen.

Nå bruker du et filter basert på betingelser i RangeStart- og RangeEnd-parameterne.

  1. Velg datokolonnen du vil filtrere på, i Power Query-redigering, og velg deretter det egendefinerte filteret for rullegardinpilen Datofiltre>.>

  2. Hvis du vil angi den første betingelsen i filtreringsrader, velger du er etter eller er etter eller lik, og deretter velger du Parameter og deretter RangeStart.

    Hvis du vil angi den andre betingelsen, hvis du valgte er etter i den første betingelsen, velger du er før eller lik, eller hvis du valgte er etter eller lik i den første betingelsen, velger du er før for den andre betingelsen, og deretter velger du Parameter og deretter RangeEnd.

    Filter rows dialog showing Range Start and Range End conditions.

    Viktig! Kontroller at spørringer er lik (=) på enten RangeStart eller RangeEnd, men ikke begge deler. Hvis lik (=) finnes på begge parameterne, kan en rad oppfylle betingelsene for to partisjoner, noe som kan føre til dupliserte data i modellen. Kan for eksempel = Table.SelectRows(#"Changed Type", each [OrderDate] >= RangeStart and [OrderDate] <= RangeEnd) resultere i dupliserte data hvis det finnes en Ordredato som er lik både RangeStart og RangeEnd.

    Velg OK for å lukke.

  3. Velg Lukk og bruk på Hjem-båndet i Power Query-redigering. Power Query laster inn data basert på filtrene som er definert av RangeStart- og RangeEnd-parameterne, og eventuelle andre filtre du har definert.

    Power Query laster bare inn data som er angitt mellom RangeStart- og RangeEnd-parameterne. Avhengig av mengden data i denne perioden, bør tabellen lastes inn raskt. Hvis det virker tregt og prosesskrevende, er det sannsynlig at spørringen ikke brettes.

Definer policy

Når du har definert RangeStart- og RangeEnd-parametere og filtrert data basert på disse parameterne, definerer du en policy for trinnvis oppdatering. Denne policyen brukes bare etter at modellen er publisert til tjenesten, og en manuell eller planlagt oppdateringsoperasjon utføres.

  1. Høyreklikk på en tabell i dataruten i datavisningen, og velg Trinnvis oppdatering.

    Data view showing Table context menu with Incremental refresh selected.

  2. Kontroller eller velg tabellen i inkrementell oppdatering og sanntidsdata>Velg tabell. Standardverdien for Listen Velg tabell er tabellen du valgte i datavisning.

  3. Angi nødvendige innstillinger:

    I Angi import- og oppdateringsområder oppdateres>denne tabellen trinnvis til På. Hvis glidebryteren er deaktivert, betyr det at Power Query-uttrykket for tabellen ikke inneholder et filter basert på RangeStart- og RangeEnd-parameterne.

    Angi den historiske lagringsperioden du vil inkludere i modellen, under Start av arkivdata. Alle rader med datoer i denne perioden lastes inn i modellen i tjenesten, med mindre andre filtre gjelder.

    Angi oppdateringsperioden under Trinnvis oppdatering av data som starter. Alle rader med datoer i denne perioden oppdateres i modellen hver gang en manuell eller planlagt oppdateringsoperasjon utføres av Power Bi-tjeneste.

  4. Angi valgfrie innstillinger:

    Velg Hent de nyeste dataene i sanntid med DirectQuery (bare Premium) i Velg valgfrie innstillinger for å inkludere de nyeste dataendringene som oppstod i datakilden etter den siste oppdateringsperioden. Denne innstillingen fører til at policyen for trinnvis oppdatering legger til en DirectQuery-partisjon i tabellen.

    Velg Bare oppdater fullstendige dager for å oppdatere bare hele dager. Hvis oppdateringsoperasjonen oppdager at en dag ikke er fullført, oppdateres ikke rader for hele dagen. Dette alternativet aktiveres automatisk når du velger Hent de nyeste dataene i sanntid med DirectQuery (bare Premium).

    Velg Oppdag dataendringer for å angi en dato/klokkeslett-kolonne som brukes til å identifisere og oppdatere bare dagene der dataene er endret. Det må finnes en dato/klokkeslett-kolonne, vanligvis for overvåkingsformål, i datakilden. Denne kolonnen kan ikke være den samme kolonnen som brukes til å partisjonere dataene med RangeStart- og RangeEnd-parameterne. Maksimumsverdien for denne kolonnen evalueres for hver av periodene i det trinnvise området. Hvis den ikke er endret siden forrige oppdatering, oppdateres ikke gjeldende periode. For modeller som er publisert til Premium-kapasiteter, kan du også angi en egendefinert spørring. Hvis du vil ha mer informasjon, kan du se Avansert trinnvis oppdatering – Egendefinerte spørringer for å oppdage dataendringer.

    Avhengig av innstillingene bør policyen se omtrent slik ut:

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

  5. Se gjennom innstillingene, og velg deretter Bruk for å fullføre oppdateringspolicyen. Dette trinnet laster ikke inn data.

Lagre og publisere til tjenesten

Nå som rangestart- og RangeEnd-parameterne, filtrerings- og oppdateringspolicyinnstillingene er fullført, lagrer du modellen og publiserer deretter til tjenesten. Hvis modellen blir stor, må du aktivere lagringsformat forstore modeller før du starter den første oppdateringen i tjenesten.

Oppdater modell

Oppdater modellen i tjenesten. Den første oppdateringen laster inn både nye og oppdaterte data i oppdateringsperioden samt historiske data for hele butikkperioden. Avhengig av mengden data, kan denne oppdateringen ta en god stund. Etterfølgende oppdateringer, enten manuelle eller planlagte, er vanligvis mye raskere fordi policyen for trinnvis oppdatering brukes, og bare data for perioden som er angitt i innstillingen for oppdateringspolicy, oppdateres.

Konverter DateTime til heltall

Denne aktiviteten er bare nødvendig hvis tabellen bruker surrogatnøkler for heltall i stedet for dato/klokkeslett-verdier i datokolonnen du bruker for filterdefinisjonen RangeStart og RangeEnd.

Datatypen for RangeStart- og RangeEnd-parameterne må være av datatypen dato/klokkeslett, uavhengig av datatypen for datokolonnen. For mange datakilder har tabeller imidlertid ikke en kolonne med datatype for dato/klokkeslett, men har i stedet en datokolonne med surrogatnøkler for heltall i form av yyyymmdd. Du kan vanligvis ikke konvertere disse surrogatnøklene for heltall til datatypen Dato/klokkeslett fordi resultatet er et ikke-foldet spørringsuttrykk, men du kan opprette en funksjon som konverterer dato/klokkeslett-verdien i parameterne slik at det samsvarer med surrogatnøkkelen for heltall i datakildetabellen uten å miste foldbarheten. Funksjonen kalles deretter i et filtertrinn. Dette konverteringstrinnet kreves hvis datakildetabellen bare inneholder en surrogatnøkkel som heltallsdatatype.

  1. Velg rullegardinlisten Ny kilde på Hjem-båndet i Power Query-redigering, og velg deretter Tom spørring.

  2. Skriv inn et navn i Spørring Innstillinger, for eksempel DateKey, og skriv deretter inn følgende formel i redigeringsprogrammet for formelen:

    = (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. Hvis du vil teste formelen, angir du en dato/klokkeslett-verdi i Enter-parameteren, og deretter velger du Aktiver. Hvis formelen er riktig, returneres en heltallsverdi for datoen. Når du har bekreftet, sletter du denne nye aktiverte funksjonsspørringen .

  4. Velg tabellen i spørringer, og rediger deretter spørringsformelen for å kalle funksjonen med RangeStart- og RangeEnd-parameterne.

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

    Power BI table showing DateKey filter.