Del via


Åpne krav og format for speiling av målsone

Denne artikkelen beskriver landingssone- og tabell-/kolonneoperasjonskravene for åpen speiling i Microsoft Fabric.

Viktig

Denne funksjonen er i forhåndsvisning.

Når du har opprettet den åpne speilvendte databasen via Fabric-portalen eller den offentlige API-en i Fabric-arbeidsområdet, får du en nettadresse for landingssone i OneLake på hjemmesiden til det speilede databaseelementet. Denne målsonen er der programmet skal opprette en metadatafil og landdata i Parquet-format (ukomprimert, Snappy, GZIP, ZSTD).

Skjermbilde fra Stoff-portalen som viser url-plasseringen for målsonen på hjemmesiden til det speilede databaseelementet.

Landingssone

For hver speilvendt database finnes det en unik lagringsplassering i OneLake for metadata- og deltatabeller. Åpne speiling gir en landingssonemappe for program for å opprette en metadatafil og sende data til OneLake. Speiling overvåker disse filene i målsonen og leser mappen for nye tabeller og data som er lagt til.

Hvis du for eksempel har tabeller (Table A, Table B, Table C) som skal opprettes i målsonen, oppretter du mapper som følgende URL-adresser:

  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/Files/LandingZone/TableA
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/Files/LandingZone/TableB
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/Files/LandingZone/TableC

Metadatafil i målsonen

Hver tabellmappe må inneholde en _metadata.json fil.

Denne tabellmetadatafilen inneholder en JSON-post for å angi bare de unike nøkkelkolonnene som keyColumns.

Hvis du for eksempel vil deklarere kolonner C1 og C2 som en sammensatt unik nøkkel for tabellen:

{
   "keyColumns" : ["C1", "C2"]
}

Hvis keyColumns eller _metadata.json ikke er angitt, er ikke oppdatering/sletting mulig. Denne filen kan legges til når som helst, men når den er lagt til keyColumns , kan den ikke endres.

Datafil og format i målsonen

Åpne speiling støtter Parquet som landingssonefilformat med eller uten komprimering. Støttede komprimeringsformater inkluderer Snappy, GZIP og ZSTD.

Alle parquet-filene som er skrevet til målsonen, har følgende format:

<rowMarker><DataColumns>

  • rowMarker: kolonnenavnet er __rowMarker__ (inkludert to understrekingstegn før og etter rowMarker). RowMaker verdier og virkemåter:

    RowMarker\Scenario Hvis rad ikke finnes med samme nøkkelkolonne(r) i målet Hvis rad finnes med samme nøkkelkolonne(er) i målet
    0 (Sett inn) Sett inn raden til målet Sett inn raden til mål, ingen validering for dup-nøkkelkolonnekontroll.
    1 (Oppdatering) Sett inn raden til mål, ingen validering/unntak for å kontrollere at rad finnes med samme nøkkelkolonne. Oppdater raden med samme nøkkelkolonne.
    2 (Slett) Ingen dataendring, ingen validering/unntak for å kontrollere at rad finnes med samme nøkkelkolonne. Slett raden med samme nøkkelkolonne.
    4 (Oppsert) Sett inn raden til mål, ingen validering/unntak for å kontrollere at rad finnes med samme nøkkelkolonne. Oppdater raden med samme nøkkelkolonne.
  • Radrekkefølge: Alle loggene i filen skal være i naturlig rekkefølge som brukt i transaksjonen. Dette er viktig for at den samme raden skal oppdateres flere ganger. Åpne speiling bruker endringene ved hjelp av rekkefølgen i filene.

  • Filrekkefølge: Filer bør legges til i monotont økende tall.

  • Filnavn: Filnavn er 20 sifre, for eksempel 00000000000000000001.parquet for den første filen, og 00000000000000000002.parquet for den andre. Filnavn bør være i kontinuerlige tall. Filer slettes automatisk av speilingstjenesten, men den siste filen blir stående slik at utgiversystemet kan referere til den for å legge til den neste filen i rekkefølge.

Første innlasting

For den første innlastingen av data i en åpen speilvendt database er rowMarker i den opprinnelige datafilen valgfri og anbefales ikke. Speiling behandler hele filen som en INSERT når rowMarker ikke finnes.

Hvis du vil ha bedre ytelse og nøyaktige måledata, er rowMarker et obligatorisk felt bare for trinnvise endringer for å bruke oppdatering/slett/oppspørring.

Trinnvise endringer

Åpne speiling leser trinnvise endringer i rekkefølge og bruker dem på måldeltatabellen. Rekkefølgen er implisitt i endringsloggen og i rekkefølgen av filene.

Dataendringer betraktes som trinnvise endringer når rowMarker kolonnen finnes fra en hvilken som helst rad/fil.

Oppdaterte rader må inneholde de fullstendige raddataene, med alle kolonner.

Her er noen eksempelparquetdata i radloggen EmployeeLocation for å endre for EmployeeID E0001 fra Redmond til Bellevue. I dette scenarioet EmployeeID er kolonnen merket som en nøkkelkolonne i metadatafilen i målsonen.

__rowMarker__,EmployeeID,EmployeeLocation
0,E0001,Redmond
0,E0002,Redmond
0,E0003,Redmond
1,E0001,Bellevue

Hvis nøkkelkolonner oppdateres, bør den presenteres av en DELETE på tidligere nøkkelkolonner og en INSERT-rader med ny nøkkel og data. Radloggen for å endre den unike identifikatoren rowMarker for EmployeeID E0001 til E0002. Du trenger ikke å oppgi alle kolonnedata for en DELETE-rad, bare nøkkelkolonnene.

__rowMarker__,EmployeeID,EmployeeLocation
0,E0001,Bellevue
2,E0001,NULL
0,E0002,Bellevue

Tabelloperasjoner

Åpne speiling støtter tabelloperasjoner som legg til, slipp og gi nytt navn til tabeller.

Legg til tabell

Åpne speiling plukker opp alle tabeller som er lagt til i målsonen av programmet. Åpne speilingsskanninger for nye tabeller i hver gjentakelse.

Slipp tabell

Åpne speiling holder oversikt over mappenavnet. Hvis en tabellmappe slettes, slipper åpne speiling tabellen i den speilvendte databasen.

Hvis en mappe opprettes på nytt, slipper åpne speiling tabellen og gjenskaper den med de nye dataene i mappen, utført ved å spore ETag for mappen.

Når du prøver å slippe en tabell, kan du prøve å slette mappen, men det er en sjanse for at åpen speiling fortsatt bruker dataene fra mappen, noe som forårsaker en slettingsfeil for utgiveren.

Gi nytt navn til tabell

Hvis du vil gi nytt navn til en tabell, slipper og gjenoppretter du mappen med innledende og trinnvise data. Data må fylles på nytt til tabellen med nytt navn.

Skjema

En tabellbane kan angis i en skjemamappe. En skjemalandingssone må ha et <schemaname>.schema mappenavn. Det kan være flere skjemaer, og det kan være flere tabeller i et skjema.

Hvis du for eksempel har skjemaer (Schema1, Schema2) og tabeller (Table A, Table B, Table C) som skal opprettes i målsonen, oppretter du mapper som følgende baner i OneLake:

  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/Files/LandingZone/Schema1.schema/TableA
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/Files/LandingZone/Schema1.schema/TableB
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/Files/LandingZone/Schema2.schema/TableC

Tabellkolonner og kolonneoperasjoner

Kolonnetyper

  • Enkle parketttyper støttes i målsonen.
  • Komplekse typer skal skrives som en JSON-streng.
  • Binære komplekse typer som geografi, bilder osv. kan lagres som binærtype i målsonen.

Legg til kolonne

Hvis nye kolonner legges til i parkettfilene, legger åpne speiling til kolonnene i deltatabellene.

Slett kolonne

Hvis en kolonne slippes fra de nye loggfilene, åpner du speilingslagre NULL for disse kolonnene i nye rader, og gamle rader har kolonnene som finnes i dataene. Hvis du vil slette kolonnen, slipper du tabellen og oppretter tabellmappen i målsonen på nytt, noe som vil føre til at Delta-tabellen blir brukt på nytt med nytt skjema og data.

Åpne speiling fagforeninger alltid alle kolonnene fra tidligere versjon av lagt til data. Hvis du vil fjerne en kolonne, oppretter du tabellen/mappen på nytt.

Endre kolonnetype

Hvis du vil endre en kolonnetype, slipper og gjenoppretter du mappen med innledende og trinnvise data med den nye kolonnetypen. Hvis du gir en ny kolonnetype uten å gjenskape tabellen, oppstår det en feil, og replikering for tabellen vil stoppe. Når tabellmappen er opprettet på nytt, gjenopptas replikering med nye data og skjema.

Gi nytt navn til kolonne

Hvis du vil gi nytt navn til en kolonne, sletter du tabellmappen og oppretter mappen på nytt med alle dataene og med det nye kolonnenavnet.

Oppryddingsprosess

En oppryddingsprosess for å åpne speiling flytter alle behandlede filer til en egen mappe kalt _ProcessedFiles eller _FilesReadyToDelete. Etter 7 dager fjernes filene fra denne mappen.

Neste trinn