Läs in data stegvis från Azure SQL Database till Azure Blob Storage med hjälp av Azure-portalen
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!
I den här självstudien skapar du en Azure Data Factory med en pipeline som läser in deltadata från en tabell i Azure SQL Database till Azure Blob Storage.
I de här självstudierna går du igenom följande steg:
- Förbered datalagringen för att lagra värdet för vattenstämpeln.
- Skapa en datafabrik.
- Skapa länkade tjänster.
- Skapa datauppsättningar för källa, mottagare och vattenstämpel.
- Skapa en pipeline.
- Köra pipelinen.
- Övervaka pipelinekörningen.
- Granska resultat
- Lägg till mer data i källan.
- Kör pipelinen igen.
- Övervaka den andra pipelinekörningen
- Granska resultatet från den andra körningen
Översikt
Här är det avancerade diagrammet:
Här är några viktiga steg för att skapa den här lösningen:
Markera vattenstämpelkolumnen. Markera en kolumn i källdatalagringen som går att använda för att dela upp de nya eller uppdaterade posterna för varje körning. Vanligtvis ökar data i den markerade kolumnen (till exempel last_modify_time elle ID) när rader skapas eller uppdateras. Det maximala värdet i den här kolumnen används som vattenstämpel.
Förbered datalagringen för att lagra värdet för vattenstämpeln. I den här självstudien lagrar du storleksgränsen i en SQL-databas.
Skapa en pipeline med följande arbetsflöde:
Pipelinen i den här lösningen har följande aktiviteter:
- Skapa två sökningsaktiviteter. Använd den första sökningsaktiviteten för att hämta det sista vattenstämpelvärdet. Använd den andra sökningsaktiviteten för att hämta det nya vattenstämpelvärdet. Vattenstämpelvärdena skickas till kopieringsaktiviteten.
- Skapa en {0}kopieringsaktivitet{0} som kopierar raderna från källdatalagringen med värdet för vattenstämpelkolumnen som är större än det gamla värdet och mindre än det nya. Sedan kopieras deltadata från källdatalagringen till Blob-lagring som en ny fil.
- Skapa en StoredProcedure-aktivitet som uppdaterar vattenstämpelvärdet för den pipeline som körs nästa gång.
Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.
Förutsättningar
- Azure SQL Database. Du använder databasen som källa för datalagringen. Om du inte har någon databas i Azure SQL Database kan du läsa Skapa en databas i Azure SQL Database för steg för att skapa en.
- Azure Storage. Du kan använda blob-lagringen som mottagare för datalagringen. Om du inte har ett lagringskonto finns det anvisningar om hur du skapar ett i Skapa ett lagringskonto. Skapa en container med namnet adftutorial.
Skapa en datatabell i din SQL-databas
Öppna SQL Server Management Studio. I Server Explorer högerklickar du på databasen och väljer Ny fråga.
Kör följande SQL-kommando mot din SQL-databas för att skapa en tabell med namnet
data_source_table
som datakällagringen:create table data_source_table ( PersonID int, Name varchar(255), LastModifytime datetime ); INSERT INTO data_source_table (PersonID, Name, LastModifytime) VALUES (1, 'aaaa','9/1/2017 12:56:00 AM'), (2, 'bbbb','9/2/2017 5:23:00 AM'), (3, 'cccc','9/3/2017 2:36:00 AM'), (4, 'dddd','9/4/2017 3:21:00 AM'), (5, 'eeee','9/5/2017 8:06:00 AM');
I den här självstudien ska du använda LastModifytime som vattenstämpelkolumn. Data i datakällagringen visas i följande tabell:
PersonID | Name | LastModifytime -------- | ---- | -------------- 1 | aaaa | 2017-09-01 00:56:00.000 2 | bbbb | 2017-09-02 05:23:00.000 3 | cccc | 2017-09-03 02:36:00.000 4 | dddd | 2017-09-04 03:21:00.000 5 | eeee | 2017-09-05 08:06:00.000
Skapa en annan tabell i SQL-databasen för att lagra värdet för högvattenmärket
Kör följande SQL-kommando mot din SQL-databas för att skapa en tabell med namnet
watermarktable
för att lagra värdet för högvattenmärket:create table watermarktable ( TableName varchar(255), WatermarkValue datetime, );
Ställ in standardvärdet för högvattenmärket med tabellnamnet på källdatalagret. I den här självstudien är tabellnamnet: data_source_table.
INSERT INTO watermarktable VALUES ('data_source_table','1/1/2010 12:00:00 AM')
Granska informationen i tabellen
watermarktable
.Select * from watermarktable
Utdata:
TableName | WatermarkValue ---------- | -------------- data_source_table | 2010-01-01 00:00:00.000
Skapa en lagrad procedur i din SQL-databas
Kör följande kommando för att skapa en lagrad procedur i din SQL-databas:
CREATE PROCEDURE usp_write_watermark @LastModifiedtime datetime, @TableName varchar(50)
AS
BEGIN
UPDATE watermarktable
SET [WatermarkValue] = @LastModifiedtime
WHERE [TableName] = @TableName
END
Skapa en datafabrik
Starta webbläsaren Microsoft Edge eller Google Chrome. Just nu är det bara webbläsarna Microsoft Edge och Google Chrome som har stöd för Data Factory UI.
Välj Skapa en resursintegreringsdatafabrik>> på den vänstra menyn:
På sidan Ny datafabrik anger du ADFIncCopyTutorialDF som namn.
Namnet på Azure Data Factory måste vara globalt unikt. Om du ser ett rött utropstecken med följande fel ändrar du namnet på datafabriken (till exempel dittnamnADFIncCopyTutorialDF) och provar att skapa fabriken igen. Se artikeln Data Factory – namnregler för namnregler för Data Factory-artefakter.
Datafabriksnamnet "ADFIncCopyTutorialDF" är inte tillgängligt
Välj den Azure-prenumeration som du vill skapa den nya datafabriken i.
För resursgruppen utför du något av följande steg:
Välj Använd befintlig och välj en befintlig resursgrupp i listrutan.
Välj Skapa ny och ange namnet på en resursgrupp.
Mer information om resursgrupper finns i Använda resursgrupper till att hantera Azure-resurser.
Välj V2 för versionen.
Välj plats för datafabriken. Endast platser som stöds visas i listrutan. Datalager (Azure Storage, Azure SQL Database, Azure SQL Managed Instance och så vidare) och beräkningar (HDInsight osv.) som används av datafabriken kan finnas i andra regioner.
Klicka på Skapa.
När datafabriken har skapats visas sidan Datafabrik som på bilden.
Välj Öppna på panelen Öppna Azure Data Factory Studio för att starta Användargränssnittet för Azure Data Factory på en separat flik.
Skapa en pipeline
I den här självstudien skapar du en pipeline med två sökningsaktiviteter, en kopieringsaktivitet och en aktivitet för lagrad procedur i en länkad pipeline.
På startsidan för Data Factory-användargränssnittet klickar du på orchestrate-panelen.
I panelen Allmänt under Egenskaper anger du IncrementalCopyPipeline som Namn. Dölj sedan panelen genom att klicka på ikonen Egenskaper i det övre högra hörnet.
Vi lägger till den första sökningsaktiviteten för att hämta det gamla vattenstämpelvärdet. I verktygslådan Aktiviteter expanderar du Allmänt och drar och släpper sökningen på pipelinedesignytan. Ändra aktivitetens namn till LookupOldWaterMarkActivity.
Växla till fliken Inställningar och klicka på + Ny för källdatauppsättningen. I det här steget skapar du en datauppsättning för att representera data i watermarktable. Den här tabellen innehåller den gamla vattenstämpeln som användes i den tidigare kopieringen.
I fönstret Ny datauppsättning väljer du Azure SQL Database och klickar på Fortsätt. Ett nytt fönster öppnas för datauppsättningen.
I fönstret Ange egenskaper för datamängden anger du WatermarkDataset som Namn.
För Länkad tjänst väljer du Ny och utför sedan följande steg:
Ange AzureSqlDatabaseLinkedService som namn.
Välj servern som Servernamn.
Välj ditt databasnamn i listrutan.
Ange användarnamnet och lösenordet.
Om du vill testa anslutningen till SQL-databasen klickar du på Testa anslutning.
Klicka på Finish.
Bekräfta att AzureSqlDatabaseLinkedService har valts för länkad tjänst.
Välj Slutför.
På fliken Anslutning väljer du [dbo].[ watermarktable] för Table. Om du vill förhandsgranska data i tabellen klickar du på Förhandsgranska data.
Växla till pipeline-redigeringsprogrammet genom att klicka på pipelinefliken högst upp eller på pipelinenamnet i trädvyn till vänster. I egenskapsfönstret för sökningsaktiviteten bekräftar du att WatermarkDataset är valt för fältet Source Dataset (Källdatauppsättning).
I verktygslådan Aktiviteter expanderar du Allmänt och drar och släpper ytterligare en sökning på pipelinedesignytan och anger namnet LookupNewWaterMarkActivity på fliken Allmänt i egenskapsfönstret. Med den här sökningsaktiviteten kopieras det nya vattenstämpelvärdet från tabellen med källdata till målet.
I egenskapsfönstret för den andra sökningsaktiviteten växlar du till fliken Inställningar och klickar på New (Nytt). Du skapar en datauppsättning för att peka på källtabellen som innehåller det nya vattenstämpelvärdet (det högsta värdet för LastModifyTime).
I fönstret Ny datauppsättning väljer du Azure SQL Database och klickar på Fortsätt.
I fönstret Ange egenskaper anger du SourceDataset som Namn. Välj AzureSqlDatabaseLinkedService som länkad tjänst.
Välj [dbo].[data_source_table] som tabell. Du kan ange en fråga för den här datauppsättningen senare under kursen. Frågan åsidosätter den tabell som du anger i det här steget.
Välj Slutför.
Växla till pipeline-redigeringsprogrammet genom att klicka på pipelinefliken högst upp eller på pipelinenamnet i trädvyn till vänster. I egenskapsfönstret för sökningsaktiviteten bekräftar du att SourceDataset är valt för fältet Source Dataset (Källdatauppsättning).
Välj Fråga i fältet Använd fråga och ange följande fråga: du väljer endast det högsta värdet för LastModifytime från data_source_table. Kontrollera att du också har markerat endast första raden.
select MAX(LastModifytime) as NewWatermarkvalue from data_source_table
I verktygslådan Aktiviteter expanderar du Flytta och transformerar och drar och släpper aktiviteten Kopiera från verktygslådan Aktiviteter och anger namnet till IncrementalCopyActivity.
Anslut båda sökningsaktiviteterna till kopieringsaktiviteten genom att dra den gröna knappen som är ansluten till sökningsaktiviteterna till kopieringsaktiviteten. Släpp musknappen när du ser att kantlinjefärgen för kopieringsaktiviteten ändras till blått.
Välj kopieringsaktiviteten och bekräfta att du ser egenskaperna för aktiviteten i fönstret Egenskaper.
Växla till fliken Källa i fönstret Egenskaper och utför följande steg:
Markera SourceDataset för fältet för källdatauppsättning.
Välj Fråga i fältet Använd fråga.
Ange följande SQL-fråga för fältet Fråga.
select * from data_source_table where LastModifytime > '@{activity('LookupOldWaterMarkActivity').output.firstRow.WatermarkValue}' and LastModifytime <= '@{activity('LookupNewWaterMarkActivity').output.firstRow.NewWatermarkvalue}'
Växla till fliken Sink (Mottagare) och klicka på + Ny för fältet för datauppsättning för mottagare.
I den här självstudien är datalager för mottagare av typen Azure Blob Storage. Välj därför Azure Blob Storage och klicka på Fortsätt i fönstret Ny datauppsättning .
I fönstret Välj format väljer du formattypen för dina data och klickar på Fortsätt.
I fönstret Ange egenskaper anger du SinkDataset som Namn. För Länkad tjänst väljer du + Ny. I det här steget skapar du en anslutning (länkad tjänst) till Azure Blob Storage.
I fönstret Ny länkad tjänst (Azure Blob Storage) gör du följande:
- Ange AzureStorageLinkedService som namn.
- Välj ditt Azure Storage-konto i Lagringskontonamn.
- Testa anslutningen och klicka sedan på Slutför.
I fönstret Ange egenskaper bekräftar du att AzureStorageLinkedService har valts för länkad tjänst. Välj sedan Slutför.
Gå till fliken Anslutning i SinkDataset och gör följande:
- För fältet Filsökväg anger du adftutorial/incrementalcopy. adftutorial är blobcontainerns namn och incrementalcopy är mappens namn. Det här kodfragmentet förutsätter att du har en blobcontainer med namnet adftutorial i din blob-lagring. Skapa containern om den inte finns, eller ställ in den för namnet på en befintlig. Azure Data Factory skapar automatiskt utdatamappen incrementalcopy om den inte finns. Du kan också använda knappen Bläddra för Filsökväg för att navigera till en mapp i en blobcontainer.
- För fildelen av fältet Filsökväg väljer du Lägg till dynamiskt innehåll [Alt+P] och anger
@CONCAT('Incremental-', pipeline().RunId, '.txt')
sedan i det öppnade fönstret. Välj sedan Slutför. Filnamnet genereras dynamiskt med uttrycket. Varje pipelinekörning har ett unikt ID. Kopieringsaktiviteten använder körnings-ID för att generera filnamnet.
Växla till pipeline-redigeringsprogrammet genom att klicka på pipelinefliken högst upp eller på pipelinenamnet i trädvyn till vänster.
I verktygslådan Aktiviteter expanderar du Allmänt och drar och släpper aktiviteten Lagrad procedur från verktygslådan Aktiviteter till pipelinedesignerytan. Anslut gröna utdata (lyckades) från aktiviteten Kopiera till den lagrade proceduraktiviteten.
Välj Lagrad proceduraktivitet i pipelinedesignern och ändra dess namn till StoredProceduretoWriteWatermarkActivity.
Växla till fliken SQL-konto och välj AzureSqlDatabaseLinkedService för länkad tjänst.
Växla till fliken Lagrad procedur och gör följande:
Som Namn på lagrad procedur väljer du usp_write_watermark.
När du ska ange värden för parametrarna för lagrad procedur klickar du på Importera parameter och anger följande värden för parametern:
Namn Typ Värde LastModifiedtime Datum/tid @{activity('LookupNewWaterMarkActivity').output.firstRow.NewWatermarkvalue} TableName String @{activity('LookupOldWaterMarkActivity').output.firstRow.TableName}
Verifiera pipelineinställningarna genom att klicka på Verifiera i verktygsfältet. Kontrollera att det inte finns några verifieringsfel. Om du vill stänga fönstret Pipelineverifieringsrapport klickar du på >>.
Publicera entiteter (länkade tjänster, datauppsättningar och pipeliner) till Azure Data Factory-tjänsten genom att välja knappen Publicera alla. Vänta tills du ser ett meddelande om att publiceringen är klar.
Utlös en pipelinekörning
Klicka på Lägg till utlösare i verktygsfältet och klicka på Utlös nu.
I fönstret Pipeline Run (Pipelinekörning) väljer du Slutför.
Övervaka pipelinekörningen
Växla till fliken Övervaka till vänster. Du ser status för pipelinekörningen som utlöses av en manuell utlösare. Du kan använda länkar under kolumnen PIPELINE NAME för att visa körningsinformation och köra pipelinen igen.
Om du vill se aktivitetskörningar som är associerade med pipelinekörningen väljer du länken under kolumnen PIPELINE NAME (PIPELINE NAME ). Om du vill ha mer information om aktivitetskörningarna väljer du länken Information (glasögonikonen) under kolumnen AKTIVITETSNAMN . Välj Alla pipelinekörningar överst för att gå tillbaka till vyn Pipelinekörningar. Välj Uppdatera för att uppdatera vyn.
Granska resultaten
Anslut till Azure Storage-kontot med verktyg som Azure Storage Explorer. Kontrollera att en utdatafil har skapats i mappen incrementalcopy i adftutorial-containern.
Öppna utdatafilen och notera att alla data har kopierats från data_source_table till blobfilen.
1,aaaa,2017-09-01 00:56:00.0000000 2,bbbb,2017-09-02 05:23:00.0000000 3,cccc,2017-09-03 02:36:00.0000000 4,dddd,2017-09-04 03:21:00.0000000 5,eeee,2017-09-05 08:06:00.0000000
Kontrollera det senaste värdet från
watermarktable
. Du kan se att vattenstämpeln har uppdaterats.Select * from watermarktable
Här är utdata:
| TableName | WatermarkValue | | --------- | -------------- | | data_source_table | 2017-09-05 8:06:00.000 |
Lägg till mer data i källan
Infoga nya data i databasen (datakälllagret).
INSERT INTO data_source_table
VALUES (6, 'newdata','9/6/2017 2:23:00 AM')
INSERT INTO data_source_table
VALUES (7, 'newdata','9/7/2017 9:01:00 AM')
Uppdaterade data i databasen är:
PersonID | Name | LastModifytime
-------- | ---- | --------------
1 | aaaa | 2017-09-01 00:56:00.000
2 | bbbb | 2017-09-02 05:23:00.000
3 | cccc | 2017-09-03 02:36:00.000
4 | dddd | 2017-09-04 03:21:00.000
5 | eeee | 2017-09-05 08:06:00.000
6 | newdata | 2017-09-06 02:23:00.000
7 | newdata | 2017-09-07 09:01:00.000
Utlös ytterligare en pipelinekörning
Växla till fliken Redigera . Klicka på pipelinen i trädvyn om den inte öppnas i designern.
Klicka på Lägg till utlösare i verktygsfältet och klicka på Utlös nu.
Övervaka den andra pipelinekörningen
Växla till fliken Övervaka till vänster. Du ser status för pipelinekörningen som utlöses av en manuell utlösare. Du kan använda länkar under kolumnen PIPELINE NAME för att visa aktivitetsinformation och köra pipelinen igen.
Om du vill se aktivitetskörningar som är associerade med pipelinekörningen väljer du länken under kolumnen PIPELINE NAME (PIPELINE NAME ). Om du vill ha mer information om aktivitetskörningarna väljer du länken Information (glasögonikonen) under kolumnen AKTIVITETSNAMN . Välj Alla pipelinekörningar överst för att gå tillbaka till vyn Pipelinekörningar. Välj Uppdatera för att uppdatera vyn.
Verifiera den andra utdata
I blob-lagringen ser du att en annan fil har skapats. I den här självstudien är det nya filnamnet
Incremental-<GUID>.txt
. När du öppnar filen ser du två rader med poster i den.6,newdata,2017-09-06 02:23:00.0000000 7,newdata,2017-09-07 09:01:00.0000000
Kontrollera det senaste värdet från
watermarktable
. Du kan se att vattenstämpeln har uppdaterats igen.Select * from watermarktable
Exempel på utdata:
| TableName | WatermarkValue | | --------- | -------------- | | data_source_table | 2017-09-07 09:01:00.000 |
Relaterat innehåll
I den här självstudiekursen fick du:
- Förbered datalagringen för att lagra värdet för vattenstämpeln.
- Skapa en datafabrik.
- Skapa länkade tjänster.
- Skapa datauppsättningar för källa, mottagare och vattenstämpel.
- Skapa en pipeline.
- Köra pipelinen.
- Övervaka pipelinekörningen.
- Granska resultat
- Lägg till mer data i källan.
- Kör pipelinen igen.
- Övervaka den andra pipelinekörningen
- Granska resultatet från den andra körningen
I den här självstudien kopierade pipelinen data från en enda tabell i SQL Database till Blob Storage. Gå vidare till följande självstudie för att lära dig hur du kopierar data från flera tabeller i en SQL Server-databas till SQL Database.