Åbn krav til og format for spejling af landingszonen
I denne artikel beskrives kravene til landingszonen og tabel-/kolonnehandlingen for åben spejling i Microsoft Fabric.
Vigtigt
Denne funktion er en prøveversion.
Når du har oprettet din åbne spejlede database via Fabric-portalen eller den offentlige API i dit Fabric-arbejdsområde, får du en URL-adresse til landingszonen i OneLake på startsiden for det spejlede databaseelement. Denne landingszone er det sted, hvor dit program opretter en metadatafil og lander data i Parquet-format (dekomprimeret, Snappy, GZIP, ZSTD).
Landingszone
For hver spejlet database er der en entydig lagringsplacering i OneLake for metadata og deltatabeller. Åbn spejling indeholder en landingszonemappe, hvor programmet kan oprette en metadatafil og overføre data til OneLake. Spejling overvåger disse filer i landingszonen og læser mappen for nye tabeller og data, der er tilføjet.
Hvis du f.eks. har tabeller (Table A
, Table B
, Table C
), der skal oprettes i landingszonen, skal du oprette 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 landingszonen
Alle tabelmapper skal indeholde en _metadata.json
fil.
Denne tabelmetadatafil indeholder en JSON-post, der i øjeblikket kun angiver de entydige nøglekolonner som keyColumns
.
Hvis du f.eks. vil deklarere kolonner C1
og C2
som en sammensat entydig nøgle for tabellen:
{
"keyColumns" : ["C1", "C2"]
}
Hvis keyColumns
eller _metadata.json
ikke er angivet, er opdatering/sletninger ikke mulige. Denne fil kan tilføjes når som helst, men når den er tilføjet keyColumns
, kan den ikke ændres.
Datafil og -format i landingszonen
Åben spejling understøtter Parquet som filformatet for landingszonen med eller uden komprimering. Understøttede komprimeringsformater omfatter Snappy, GZIP og ZSTD.
Alle parquetfiler, der skrives til landingszonen, har følgende format:
<RowMarker><DataColumns>
RowMarker
: kolonnenavn er__rowMarker__
(inklusive to understregningstegn før og efterrowMarker
).RowMaker
værdier:0
for INSERT1
til OPDATERING2
for DELETE4
til UPSERT
Rækkerækkefølge: Alle loggene i filen skal være i naturlig rækkefølge som anvendt i transaktionen. Dette er vigtigt for den samme række, der opdateres flere gange. Åbn spejling anvender ændringerne ved hjælp af rækkefølgen i filerne.
Filrækkefølge: Filer skal tilføjes i monotont stigende tal.
Filnavn: Filnavnet er 20 cifre, f.eks
00000000000000000001.parquet
. for den første fil og00000000000000000002.parquet
for det andet. Filnavne skal være i fortløbende tal. Filer slettes automatisk af spejlingstjenesten, men den sidste fil bliver efterladt, så udgiversystemet kan referere til den for at tilføje den næste fil i rækkefølge.
Startindlæsning
I forbindelse med den indledende indlæsning af data i en åben spejlet database skal INSERT være angivet som rækkemærke for alle rækker. Uden RowMarker
data i en fil behandler spejling hele filen som insert.
Trinvise ændringer
Åbn spejling læser trinvise ændringer i rækkefølge og anvender dem på måldeltatabellen. Rækkefølgen er implicit i ændringsloggen og i rækkefølgen af filerne.
Opdaterede rækker skal indeholde alle rækkedata med alle kolonner.
Her er nogle eksempel på parquetdata for rækkehistorikken for at ændre EmployeeLocation
for EmployeeID
E0001 fra Redmond til Bellevue. I dette scenarie er kolonnen EmployeeID
markeret som en nøglekolonne i metadatafilen i landingszonen.
__rowMarker__,EmployeeID,EmployeeLocation
0,E0001,Redmond
0,E0002,Redmond
0,E0003,Redmond
1,E0001,Bellevue
Hvis nøglekolonner opdateres, skal de præsenteres af en DELETE på tidligere nøglekolonner og en INSERT-række med ny nøgle og data. Det kan f.eks. være rækkehistorikken for at ændre det RowMarker
entydige id for EmployeeID
E0001 til E0002. Du behøver ikke at angive alle kolonnedata for en DELETE-række, kun nøglekolonnerne.
__rowMarker__,EmployeeID,EmployeeLocation
0,E0001,Bellevue
2,E0001,NULL
0,E0002,Bellevue
Tabelhandlinger
Åbn spejling understøtter tabelhandlinger, f.eks. tilføj, slip og omdøb tabeller.
Tilføj tabel
Åben spejling henter en hvilken som helst tabel, der er føjet til landingszonen af programmet. Åbn spejlingsscanninger for nye tabeller i hver gentagelse.
Slip tabel
Åbn spejling holder styr på mappenavnet. Hvis en tabelmappe slettes, falder tabellen i den spejlede database med den åbne spejling.
Hvis der oprettes en mappe igen, falder tabellen ved at åbne spejling og genskaber den med de nye data i mappen ved at spore ETag for mappen.
Når du forsøger at slippe en tabel, kan du prøve at slette mappen, men der er en risiko for, at åben spejling stadig bruger dataene fra mappen, hvilket medfører en sletningsfejl for udgiveren.
Omdøb tabel
Hvis du vil omdøbe en tabel, skal du slippe og genoprette mappen med indledende og trinvise data. Data skal udfyldes igen til den omdøbte tabel.
Skema
Der kan angives en tabelsti i en skemamappe. En landingszone for et skema skal have et <schemaname>.schema
mappenavn. Der kan være flere skemaer, og der kan være flere tabeller i et skema.
Hvis du f.eks. har skemaer (Schema1
, Schema2
) og tabeller (Table A
, Table B
, Table C
), der skal oprettes i landingszonen, skal du oprette mapper som følgende stier 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
Tabelkolonner og kolonnehandlinger
Kolonnetyper
- Enkle parkettyper understøttes i landingszonen.
- Komplekse typer skal skrives som en JSON-streng.
- Binære komplekse typer som geografi, billeder osv. kan gemmes som binær type i landingszonen.
Tilføj kolonne
Hvis der føjes nye kolonner til parquetfilerne, føjer åben spejling kolonnerne til deltatabellerne.
Slet kolonne
Hvis en kolonne slippes fra de nye logfiler, skal du åbne spejlingslagre NULL
for disse kolonner i nye rækker, og gamle rækker indeholder kolonnerne i dataene. Hvis du vil slette kolonnen, skal du slippe tabellen og oprette tabelmappen i landingszonen igen, hvilket vil resultere i genskabelse af Delta-tabellen med nyt skema og nye data.
Åbn spejling forener altid alle kolonner fra tidligere version af tilføjede data. Hvis du vil fjerne en kolonne, skal du genoprette tabellen/mappen.
Skift kolonnetype
Hvis du vil ændre en kolonnetype, skal du slippe og genoprette mappen med indledende og trinvise data med den nye kolonnetype. Hvis du angiver en ny kolonnetype uden at oprette tabellen igen, opstår der en fejl, og replikeringen for den pågældende tabel stopper. Når tabelmappen er oprettet igen, genoptages replikeringen med nye data og skemaer.
Omdøb kolonne
Hvis du vil omdøbe en kolonne, skal du slette tabelmappen og genoprette mappen med alle dataene og med det nye kolonnenavn.