Extrahering, transformering och inläsning (ETL)

Ett vanligt problem som organisationer ställs inför är att samla in data från flera källor i flera format. Sedan skulle du behöva flytta den till ett eller flera datalager. Målet kanske inte är samma typ av datalager som källan. Ofta är formatet annorlunda, eller så måste data formas eller rensas innan de läses in i slutmålet.

Under åren har olika verktyg, tjänster och processer utvecklats för att hantera dessa utmaningar. Oavsett vilken process som används finns det ett vanligt behov av att samordna arbetet och tillämpa en viss nivå av datatransformering i datapipelinen. I följande avsnitt beskrivs de vanliga metoder som används för att utföra dessa uppgifter.

ETL-process (extrahering, transformering och inläsning)

Extrahering, transformering och inläsning (ETL) är en datapipeline som används för att samla in data från olika källor. Den transformerar sedan data enligt affärsregler och läser in data till ett måldatalager. Omvandlingsarbetet i ETL sker i en specialiserad motor, och ofta används mellanlagringstabeller för att tillfälligt lagra data när de transformeras och slutligen läses in till målet.

Den dataomvandling som sker omfattar vanligtvis olika åtgärder, till exempel filtrering, sortering, aggregering, sammanfogning av data, rensning av data, deduplicering och validering av data.

Diagram över ETL-processen (extract-transform-load).

De tre ETL-faserna körs ofta parallellt för att spara tid. När data till exempel extraheras kan en transformeringsprocess arbeta med data som redan tagits emot och förbereda dem för inläsning, och en inläsningsprocess kan börja arbeta med förberedda data i stället för att vänta på att hela extraheringen ska slutföras.

Relevant Azure-tjänst:

Andra verktyg:

Extrahering, laddning och transformering (ELT)

Extrahering, laddning och transformering (ELT) skiljer sig från ETL enbart i den plats där omvandlingen sker. I ELT-pipelinen sker omvandlingen i måldatalagret. I stället för att använda en separat transformeringsmotor används bearbetningsfunktionerna i måldatalagret för att transformera data. Detta förenklar arkitekturen genom att ta bort transformeringsmotorn från pipelinen. En annan fördel med den här metoden är att skalning av måldatalagret även skalar ELT-pipelineprestanda. ELT fungerar dock bara bra när målsystemet är kraftfullt nog att transformera data effektivt.

Diagram över ELT-processen (extract-load-transform).

Vanliga användningsfall för ELT faller inom stordatasfären. Du kan till exempel börja med att extrahera alla källdata till flata filer i skalbar lagring, till exempel ett Hadoop-distribuerat filsystem, ett Azure Blob Store eller Azure Data Lake Gen 2 (eller en kombination). Tekniker, till exempel Spark, Hive eller PolyBase, kan sedan användas för att fråga källdata. En viktig sak med ELT är att datalagret som används för att utföra transformeringen är samma datalager där data slutligen används. Det här datalagret läser direkt från den skalbara lagringen i stället för att läsa in data i sin egen upphovsrättsskyddade lagring. Den här metoden hoppar över datakopieringssteget som finns i ETL, vilket ofta kan vara en tidskrävande åtgärd för stora datamängder.

I praktiken är måldatalagret ett informationslager som använder antingen ett Hadoop-kluster (med Hive eller Spark) eller en SQL dedikerade pooler på Azure Synapse Analytics. I allmänhet överlagras ett schema på flata fildata vid frågetiden och lagras som en tabell, vilket gör att data kan efterfrågas precis som andra tabeller i datalagret. Dessa kallas externa tabeller eftersom data inte finns i lagring som hanteras av själva datalagret, utan på en del extern skalbar lagring som Azure Data Lake Store eller Azure Blob Storage.

Datalagret hanterar endast schemat för data och tillämpar schemat vid läsning. Ett Hadoop-kluster som använder Hive skulle till exempel beskriva en Hive-tabell där datakällan i praktiken är en sökväg till en uppsättning filer i HDFS. I Azure Synapse kan PolyBase uppnå samma resultat – att skapa en tabell mot data som lagras externt till själva databasen. När källdata har lästs in kan de data som finns i de externa tabellerna bearbetas med hjälp av funktionerna i datalagret. I stordatascenarier innebär det att datalagret måste kunna MPP (Massively Parallel Processing– massivt parallell bearbetning), vilket delar upp data i mindre segment och distribuerar bearbetningen av segmenten över flera noder parallellt.

Den sista fasen i ELT-pipelinen är vanligtvis att omvandla källdata till ett slutligt format som är effektivare för de typer av frågor som behöver stöd. Data kan till exempel partitioneras. ELT kan också använda optimerade lagringsformat som Parquet, som lagrar radorienterade data i kolumnformat och tillhandahåller optimerad indexering.

Relevant Azure-tjänst:

Andra verktyg:

Dataflöde och kontrollflöde

När det gäller datapipelines säkerställer kontrollflödet en ordnad bearbetning av en uppsättning uppgifter. För att framtvinga rätt bearbetningsordning för dessa uppgifter används prioritetsbegränsningar. Du kan se dessa begränsningar som kopplingar i ett arbetsflödesdiagram, som du ser i bilden nedan. Varje uppgift har ett resultat, till exempel lyckades, misslyckades eller slutförde. Efterföljande uppgifter initierar inte bearbetning förrän dess föregångare har slutfört något av dessa resultat.

Kontrollflöden kör dataflöden som en uppgift. I en dataflödesaktivitet extraheras data från en källa, transformeras eller läses in i ett datalager. Utdata från en dataflödesaktivitet kan vara indata till nästa dataflödesaktivitet och dataflöden kan köras parallellt. Till skillnad från kontrollflöden kan du inte lägga till begränsningar mellan aktiviteter i ett dataflöde. Du kan dock lägga till ett datavisningsprogram för att se data när de bearbetas av varje uppgift.

Diagram över ett dataflöde som körs som en uppgift i ett kontrollflöde.

I diagrammet ovan finns det flera uppgifter i kontrollflödet, varav en är en dataflödesaktivitet. En av uppgifterna är kapslad i en container. Containrar kan användas för att tillhandahålla struktur för uppgifter, vilket ger en arbetsenhet. Ett exempel är att upprepa element i en samling, till exempel filer i en mapp eller databasutdrag.

Relevant Azure-tjänst:

Andra verktyg:

Teknikval

Nästa steg

Följande referensarkitekturer visar ELT-pipelines från start till slut på Azure: