Del via


Å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).

Skærmbillede fra Fabric-portalen, der viser url-adressen til landingszonen på startsiden for det spejlede databaseelement.

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 efter rowMarker).

    • RowMaker værdier:
      • 0 for INSERT
      • 1 til OPDATERING
      • 2 for DELETE
      • 4 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 og 00000000000000000002.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.

Næste trin