Å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).
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 etterrowMarker
).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, og00000000000000000002.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.