Snowflake och Azure Data Factory

Ett Data Warehouse (DW) används för att samla data från olika system. Här utförs vanligen transformering av data, beräkning av nya fält m.m. En fördel med detta är att vi får en ”sanning” dvs vi behöver exempelvis inte beräkna olika marginaler i respektive slutsystem och då riskera att dessa beräknas på olika sätt. I ett DW kan man även utföra avancerade transformeringar vilka inte alltid är möjligt i systemet som konsumerar data.


Snowflake är ett av de DW som blivit alltmer populärt senaste åren. Snowflake är ett flexibelt och kraftfullt DW i molnet som är enkelt att komma i gång med och som skalar bekymmersfritt. I en bloggserie om tre avsnitt kommer vi visa hur man kan gå till väga för att ladda in data från olika källsystem till att datan finns i Qlik Sense redo för analys.


Inladdning av data till Snowflake med hjälp av Azure Data Factory

Första steget är att få in data till Snowflake från källsystemen. Det finns många olika sätt att lösa detta på och här kommer vi att visa hur detta kan lösas med hjälp av Azure Data Factory.

I vårt exempel så kommer vi att läsa data från en Azure SQL databas, spara ner datan i parquet-filer till Blob storage i Azure och ladda in filerna till Snowflake via Snowpipes.

Azure Data Factory kan användas för att skapa pipelines, en pipeline innehåller olika aktiviteter och genom dessa hämtas data från en källa och sparas till en destination. Nedan visas ett enkelt exempel på hur detta kan göras med hjälp av aktiviteten ”Copy data”. Här har vi skapat en källa (Source) och en destination (Sink).



Dataset i Data Factory har två funktioner:

  1. Den har en koppling till det som kallas för Linked service, som innehåller den faktiska kopplingen mot källsystemet i form av servernamn, autentisering etc. (Sätts upp en gång per källsystem)

  2. Den har mer detaljerad konfiguration hur källan/destinationen ska hanteras exempelvis definieras fil-typ som ska användas och den kan innehålla sökvägen till den blob där filerna ska sparas.

Körningar av pipelines i Data Factory schemaläggs beroende på hur ofta vi har behov av att läsa data och sedan kan inläsningen av data triggas automatiskt till Snowflake via Snowpipes och Microsoft Azure Event Grid. Nu har vi datat inne i Snowflake redo att transformeras, mer om detta i nästa inlägg!


I vårt exempel har vi skapat en pipeline med endast en aktivitet, ett mer realistiskt exempel skulle vara att läsa in en lista på de tabeller som ska hämtas, loopa över denna lista och utföra aktiviteten för varje iteration så att vi sparar ner en fil till vår destination för varje tabell i vår lista men logiken skulle vara densamma.

 

Skriven av: Erik Johansson

Erik Johansson är Business Intelligence-konsult och har erfarenhet från kunder inom retail och produktion. Erik arbetar bland annat med Qlik och Snowflake samt har även tidigare erfarenhet från integrationsutveckling. LinkedIn