Dela via


Deltaformat i Azure Data Factory

GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics

Dricks

Prova Data Factory i Microsoft Fabric, en allt-i-ett-analyslösning för företag. Microsoft Fabric omfattar allt från dataflytt till datavetenskap, realtidsanalys, business intelligence och rapportering. Lär dig hur du startar en ny utvärderingsversion kostnadsfritt!

Den här artikeln beskriver hur du kopierar data till och från en deltasjö som lagras i Azure Data Lake Store Gen2 eller Azure Blob Storage med hjälp av deltaformatet. Den här anslutningsappen är tillgänglig som en infogad datauppsättning i mappning av dataflöden som både en källa och en mottagare.

Mappa dataflödesegenskaper

Den här anslutningsappen är tillgänglig som en infogad datauppsättning i mappning av dataflöden som både en källa och en mottagare.

Källegenskaper

Tabellen nedan visar de egenskaper som stöds av en deltakälla. Du kan redigera dessa egenskaper på fliken Källalternativ .

Name beskrivning Obligatoriskt Tillåtna värden Egenskap för dataflödesskript
Format Formatet måste vara delta ja delta format
Filsystem Container-/filsystemet i deltasjön ja String fileSystem
Folder path Katalogen för deltasjön ja String folderPath
Komprimeringstyp Komprimeringstypen för deltatabellen nej bzip2
gzip
deflate
ZipDeflate
snappy
lz4
compressionType
Compression level Välj om komprimeringen ska slutföras så snabbt som möjligt eller om den resulterande filen ska komprimeras optimalt. krävs om compressedType anges. Optimal eller Fastest compressionLevel
Tidsresa Välj om du vill köra frågor mot en äldre ögonblicksbild av en deltatabell nej Fråga efter tidsstämpel: Tidsstämpel
Fråga efter version: Heltal
timestampAsOf
versionAsOf
Tillåt att inga filer hittas Om sant utlöses inte ett fel om inga filer hittas nej true eller false ignoreNoFilesFound

Importera schema

Delta är endast tillgängligt som en infogad datauppsättning och har som standard inget associerat schema. Om du vill hämta kolumnmetadata klickar du på knappen Importera schemafliken Projektion . På så sätt kan du referera till kolumnnamnen och datatyperna som anges av corpus. Om du vill importera schemat måste en dataflödesbugingsession vara aktiv och du måste ha en befintlig CDM-entitetsdefinitionsfil att peka på.

Exempel på deltakällaskript

source(output(movieId as integer,
            title as string,
            releaseDate as date,
            rated as boolean,
            screenedOn as timestamp,
            ticketPrice as decimal(10,2)
            ),
    store: 'local',
    format: 'delta',
    versionAsOf: 0,
    allowSchemaDrift: false,
    folderPath: $tempPath + '/delta'
  ) ~> movies

Egenskaper för mottagare

I tabellen nedan visas de egenskaper som stöds av en deltamottagare. Du kan redigera de här egenskaperna på fliken Inställningar .

Name beskrivning Obligatoriskt Tillåtna värden Egenskap för dataflödesskript
Format Formatet måste vara delta ja delta format
Filsystem Container-/filsystemet i deltasjön ja String fileSystem
Folder path Katalogen för deltasjön ja String folderPath
Komprimeringstyp Komprimeringstypen för deltatabellen nej bzip2
gzip
deflate
ZipDeflate
snappy
lz4
TarGZip
tar
compressionType
Compression level Välj om komprimeringen ska slutföras så snabbt som möjligt eller om den resulterande filen ska komprimeras optimalt. krävs om compressedType anges. Optimal eller Fastest compressionLevel
Vakuum Tar bort filer som är äldre än den angivna varaktigheten som inte längre är relevanta för den aktuella tabellversionen. När ett värde på 0 eller mindre anges utförs inte vakuumåtgärden. ja Integer vakuum
Tabellåtgärd Talar om för ADF vad du ska göra med deltatabellen i måltabellen i mottagaren. Du kan lämna den som den är och lägga till nya rader, skriva över den befintliga tabelldefinitionen och data med nya metadata och data, eller behålla den befintliga tabellstrukturen men först trunkera alla rader och sedan infoga de nya raderna. nej Ingen, Trunkera, Skriv över deltaTruncate, overwrite
Uppdatera metod När du väljer "Tillåt infoga" ensam eller när du skriver till en ny deltatabell tar målet emot alla inkommande rader oavsett radprinciperna som angetts. Om dina data innehåller rader med andra radprinciper måste de undantas med hjälp av en tidigare filtertransformering.

När alla uppdateringsmetoder har valts utförs en Sammanslagning, där rader infogas/tas bort/upserted/uppdateras enligt radprinciperna som angetts med hjälp av en föregående Alter Row-transformering.
ja true eller false infogningsbar
kan tas bort
upsertable
kan uppdateras
Optimerad skrivning Uppnå högre dataflöde för skrivåtgärder via optimering av intern blandning i Spark-köre. Därför kan du märka färre partitioner och filer som är av större storlek nej true eller false optimizedWrite: true
Automatisk komprimering När en skrivåtgärd har slutförts kör OPTIMIZE Spark automatiskt kommandot för att ordna om data, vilket resulterar i fler partitioner om det behövs, för bättre läsprestanda i framtiden nej true eller false autoCompact: true

Exempel på deltamottagareskript

Det associerade dataflödesskriptet är:

moviesAltered sink(
          input(movieId as integer,
                title as string
            ),
           mapColumn(
                movieId,
                title
            ),
           insertable: true,
           updateable: true,
           deletable: true,
           upsertable: false,
           keys: ['movieId'],
            store: 'local',
           format: 'delta',
           vacuum: 180,
           folderPath: $tempPath + '/delta'
           ) ~> movieDB

Deltamottagare med partitionsrensning

Med det här alternativet under Uppdateringsmetod ovan (t.ex. update/upsert/delete) kan du begränsa antalet partitioner som inspekteras. Endast partitioner som uppfyller det här villkoret hämtas från målarkivet. Du kan ange en fast uppsättning värden som en partitionskolumn kan ta.

Skärmbild av alternativen för partitionsrensning är tillgängliga för att begränsa inspektionen.

Exempel på skript för deltamottagare med partitionsrensning

Ett exempelskript anges enligt nedan.

DerivedColumn1 sink( 
      input(movieId as integer,
            title as string
           ), 
      allowSchemaDrift: true,
      validateSchema: false,
      format: 'delta',
      container: 'deltaContainer',
      folderPath: 'deltaPath',
      mergeSchema: false,
      autoCompact: false,
      optimizedWrite: false,
      vacuum: 0,
      deletable:false,
      insertable:true,
      updateable:true,
      upsertable:false,
      keys:['movieId'],
      pruneCondition:['part_col' -> ([5, 8])],
      skipDuplicateMapInputs: true,
      skipDuplicateMapOutputs: true) ~> sink2
 

Delta läser bara 2 partitioner där part_col == 5 och 8 från måldeltatarkivet i stället för alla partitioner. part_col är en kolumn som måldeltatdata partitioneras av. Den behöver inte finnas i källdata.

Alternativ för optimering av deltamottagare

På fliken Inställningar hittar du ytterligare tre alternativ för att optimera omvandlingen av deltamottagare.

  • När alternativet Slå samman schema är aktiverat tillåter det schemautveckling, dvs. alla kolumner som finns i den aktuella inkommande strömmen men inte i deltatabellen för mål läggs automatiskt till i schemat. Det här alternativet stöds för alla uppdateringsmetoder.

  • När Automatisk komprimering är aktiverat kontrollerar transformering efter en enskild skrivning om filer kan komprimeras ytterligare och kör ett snabbt OPTIMIZE-jobb (med filstorlekar på 128 MB i stället för 1 GB) för att ytterligare komprimera filer för partitioner som har flest antal små filer. Automatisk komprimering hjälper till att samla ett stort antal små filer i ett mindre antal stora filer. Automatisk komprimering startar bara när det finns minst 50 filer. När en komprimeringsåtgärd har utförts skapar den en ny version av tabellen och skriver en ny fil som innehåller data från flera tidigare filer i ett komprimerat komprimerat format.

  • När Optimera skrivning är aktiverat optimerar mottagartransformeringen dynamiskt partitionsstorlekarna baserat på faktiska data genom att försöka skriva ut 128 MB filer för varje tabellpartition. Det här är en ungefärlig storlek och kan variera beroende på datamängdens egenskaper. Optimerade skrivningar förbättrar den övergripande effektiviteten för skrivningar och efterföljande läsningar. Den organiserar partitioner så att prestandan för efterföljande läsningar förbättras.

Dricks

Den optimerade skrivprocessen gör ditt övergripande ETL-jobb långsammare eftersom sink utfärdar Spark Delta Lake Optimize-kommandot när dina data har bearbetats. Vi rekommenderar att du använder optimerad skrivning sparsamt. Om du till exempel har en datapipeline per timme kör du ett dataflöde med Optimerad skrivning dagligen.

Kända begränsningar

När du skriver till en deltamottagare finns det en känd begränsning där antalet rader som skrivs inte visas i övervakningsutdata.