Del via


Trinnvis innlasting av data fra Data Warehouse til Lakehouse

I denne opplæringen lærer du hvordan du laster inn data trinnvis fra Data Warehouse til Lakehouse.

Oversikt

Her er løsningsdiagrammet på høyt nivå:

Diagram som viser trinnvis innlasting av datalogikk.

Her er de viktige trinnene for å opprette denne løsningen:

  1. Velg vannmerkekolonnen. Velg én kolonne i kildedatatabellen, som kan brukes til å dele opp de nye eller oppdaterte postene for hver kjøring. Vanligvis fortsetter dataene i denne valgte kolonnen (for eksempel last_modify_time eller ID) å øke når rader opprettes eller oppdateres. Maksimumsverdien i denne kolonnen brukes som vannmerke.

  2. Klargjør en tabell for å lagre den siste vannmerkeverdien i datalageret.

  3. Opprett et datasamlebånd med følgende arbeidsflyt:

    Datasamlebåndet i denne løsningen har følgende aktiviteter:

    • Opprett to oppslagsaktiviteter. Bruk den første oppslagsaktiviteten til å hente den siste vannmerkeverdien. Bruk den andre oppslagsaktiviteten til å hente den nye vannmerkeverdien. Disse vannmerkeverdiene sendes til kopiaktiviteten.
    • Opprett en kopiaktivitet som kopierer rader fra kildedatatabellen med verdien for vannmerkekolonnen større enn den gamle vannmerkeverdien og mindre enn den nye vannmerkeverdien. Deretter kopierer den dataene fra Data Warehouse til Lakehouse som en ny fil.
    • Opprett en lagret prosedyreaktivitet som oppdaterer den siste vannmerkeverdien for neste datasamlebåndkjøring.

Forutsetning

  • Datalager. Du bruker datalageret som kildedatalager. Hvis du ikke har det, kan du se Opprette et datalager for trinn for å opprette et.
  • Lakehouse. Du bruker Lakehouse som måldatalager. Hvis du ikke har det, kan du se Opprette en Lakehouse for trinn for å opprette en. Opprett en mappe kalt IncrementalCopy for å lagre de kopierte dataene.

Forbereder kilden

Her er noen tabeller og lagret prosedyre som du må klargjøre i kildedatalageret før du konfigurerer det trinnvise kopiforløpet.

1. Opprette en datakildetabell i datalageret

Kjør følgende SQL-kommando i datalageret for å opprette en tabell med navnet data_source_table som datakildetabellen. I denne opplæringen bruker du den som eksempeldata for å utføre den trinnvise kopien.

create table data_source_table
(
    PersonID int,
    Name varchar(255),
    LastModifytime DATETIME2(6)
);

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');

Dataene i datakildetabellen vises nedenfor:

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

I denne opplæringen bruker du LastModifytime som vannmerkekolonne.

2. Opprett en ny tabell i datalageret for å lagre den siste vannmerkeverdien

  1. Kjør følgende SQL-kommando i datalageret for å opprette en tabell med navnet vannmerke for å lagre den siste vannmerkeverdien:

    create table watermarktable
    (
    TableName varchar(255),
    WatermarkValue DATETIME2(6),
    );
    
  2. Angi standardverdien for det siste vannmerket med tabellnavnet for kildedatatabellen. I denne opplæringen er tabellnavnet data_source_table, og standardverdien er 1/1/2010 12:00:00 AM.

    INSERT INTO watermarktable
    VALUES ('data_source_table','1/1/2010 12:00:00 AM')    
    
  3. Se gjennom dataene i tabellens vannmerke.

    Select * from watermarktable
    

    Utdata:

    TableName  | WatermarkValue
    ----------  | --------------
    data_source_table | 2010-01-01 00:00:00.000
    

3. Opprette en lagret prosedyre i datalageret

Kjør følgende kommando for å opprette en lagret prosedyre i datalageret. Denne lagrede prosedyren brukes til å oppdatere den siste vannmerkeverdien etter siste datasamlebåndkjøring.

CREATE PROCEDURE usp_write_watermark @LastModifiedtime datetime, @TableName varchar(50)
AS

BEGIN

UPDATE watermarktable
SET [WatermarkValue] = @LastModifiedtime
WHERE [TableName] = @TableName

END

Konfigurere et datasamlebånd for trinnvis kopi

Trinn 1: Opprette et datasamlebånd

  1. Gå til Power BI.

  2. Velg Power BI-ikonet nederst til venstre på skjermen, og velg deretter Datafabrikk for å åpne hjemmesiden til Data Factory.

  3. Gå til Microsoft Fabric-arbeidsområdet.

  4. Velg Dataforløp , og skriv deretter inn et datasamlebåndnavn for å opprette et nytt datasamlebånd.

    Skjermbilde som viser den nye datasamlebåndknappen i det nyopprettede arbeidsområdet.

    Skjermbilde som viser navnet på oppretting av et nytt datasamlebånd.

Trinn 2: Legge til en oppslagsaktivitet for det siste vannmerket

I dette trinnet oppretter du en oppslagsaktivitet for å hente den siste vannmerkeverdien. Standardverdien 1/1/2010 12:00:00 AM angitt før, hentes.

  1. Velg Legg til datasamlebåndaktivitet , og velg Oppslag fra rullegardinlisten.

  2. Gi denne aktiviteten nytt navn til LookupOldWaterMarkActivity under Generelt-fanen.

  3. Under Innstillinger-fanen utfører du følgende konfigurasjon:

    • Datalagertype: Velg arbeidsområde.
    • Datalagertype for arbeidsområde: Velg datalager.
    • Datalager: Velg datalageret.
    • Bruk spørring: Velg tabell.
    • Tabell: Velg dbo.watermarktable.
    • Bare første rad: Valgt.

    Skjermbilde som viser oppslag av gammelt vannmerke.

Trinn 3: Legge til en oppslagsaktivitet for det nye vannmerket

I dette trinnet oppretter du en oppslagsaktivitet for å hente den nye vannmerkeverdien. Du bruker en spørring til å hente det nye vannmerket fra kildedatatabellen. Maksimumsverdien i LastModifytime-kolonnen i data_source_table hentes.

  1. Velg Oppslag under Aktiviteter-fanen på den øverste linjen for å legge til den andre oppslagsaktiviteten.

  2. Gi denne aktiviteten nytt navn til LookupNewWaterMarkActivity under Generelt-fanen.

  3. Under Innstillinger-fanen utfører du følgende konfigurasjon:

    • Datalagertype: Velg arbeidsområde.

    • Datalagertype for arbeidsområde: Velg datalager.

    • Datalager: Velg datalageret.

    • Bruk spørring: Velg spørring.

    • Spørring: Skriv inn følgende spørring for å velge maksimalt sist endret tid som nytt vannmerke:

      select MAX(LastModifytime) as NewWatermarkvalue from data_source_table
      
    • Bare første rad: Valgt.

    Skjermbilde som viser oppslag av nytt vannmerke.

Trinn 4: Legge til kopiaktiviteten for å kopiere trinnvise data

I dette trinnet legger du til en kopiaktivitet for å kopiere de trinnvise dataene mellom det siste vannmerket og det nye vannmerket fra Data Warehouse til Lakehouse.

  1. Velg Aktiviteter på den øverste linjen, og velg Kopier data –> Legg til i lerret for å hente kopiaktiviteten.

  2. Gi denne aktiviteten nytt navn til IncrementalCopyActivity under Generelt-fanen.

  3. Koble begge oppslagsaktivitetene til kopieringsaktiviteten ved å dra den grønne knappen (Ved vellykket) knyttet til oppslagsaktivitetene til kopiaktiviteten. Slipp museknappen når du ser kantlinjefargen på kopiaktiviteten endres til grønn.

    Skjermbilde som viser tilkobling av oppslag og kopier aktiviteter.

  4. Under Kilde-fanen utfører du følgende konfigurasjon:

    • Datalagertype: Velg arbeidsområde.

    • Datalagertype for arbeidsområde: Velg datalager.

    • Datalager: Velg datalageret.

    • Bruk spørring: Velg spørring.

    • Spørring: Skriv inn følgende spørring for å kopiere trinnvise data mellom siste vannmerke og nytt vannmerke.

      select * from data_source_table where LastModifytime > '@{activity('LookupOldWaterMarkActivity').output.firstRow.WatermarkValue}' and LastModifytime <= '@{activity('LookupNewWaterMarkActivity').output.firstRow.NewWatermarkvalue}'
      

    Skjermbilde som viser konfigurasjon av kopikilde.

  5. Under Mål-fanen utfører du følgende konfigurasjon:

    • Datalagertype: Velg arbeidsområde.
    • Datalagertype for arbeidsområde: Velg Lakehouse.
    • Lakehouse: Velg lakehouse.
    • Rotmappe: Velg filer.
    • Filbane: Angi mappen du vil lagre de kopierte dataene. Velg Bla gjennom for å velge mappen. Åpne Legg til dynamisk innhold for filnavnet, og skriv inn @CONCAT('Incremental-', pipeline().RunId, '.txt') i det åpne vinduet for å opprette filnavn for den kopierte datafilen i Lakehouse.
    • Filformat: Velg formattypen for dataene.

    Skjermbilde som viser målkonfigurasjon for kopiering.

Trinn 5:Legge til en lagret prosedyreaktivitet

I dette trinnet legger du til en lagret prosedyreaktivitet for å oppdatere den siste vannmerkeverdien for neste datasamlebåndkjøring.

  1. Velg Aktiviteter på den øverste linjen, og velg Lagret prosedyre for å legge til en lagret prosedyreaktivitet.

  2. Gi denne aktiviteten nytt navn til StoredProceduretoWriteWatermarkActivity under Generelt-fanen.

  3. Koble de grønne (ved vellykket) utdataene for kopieringsaktiviteten til den lagrede prosedyreaktiviteten.

  4. Under Innstillinger-fanen utfører du følgende konfigurasjon:

    • Datalagertype: Velg arbeidsområde.

    • Datalager: Velg datalageret.

    • Navn på lagret prosedyre: Angi den lagrede prosedyren du opprettet i datalageret: [dbo].[ usp_write_watermark].

    • Utvid parametere for lagret prosedyre. Hvis du vil angi verdier for de lagrede prosedyreparameterne, velger du Importer og angir følgende verdier for parameterne:

      Navn Type Verdi
      LastModifiedtime DateTime @{activity('LookupNewWaterMarkActivity').output.firstRow.NewWatermarkvalue}
      TableName Streng @{activity('LookupOldWaterMarkActivity').output.firstRow.TableName}

    Skjermbilde som viser konfigurasjon av lagret prosedyreaktivitet.

Trinn 6:Kjør datasamlebåndet og overvåk resultatet

Velg Kjør under Hjem-fanen på den øverste linjen. Velg deretter Lagre og kjør. Datasamlebåndet starter, og du kan overvåke datasamlebåndet under Utdata-fanen .

Skjermbilde som viser resultater for kjøring av datasamlebånd.

Gå til Lakehouse, du finner datafilen er under mappen du har angitt, og du kan velge filen for å forhåndsvise de kopierte dataene.

Skjermbilde som viser lakehouse-data for den første datasamlebåndkjøringen.

Skjermbilde som viser forhåndsvisning av lakehouse-data for den første kjøringen av datasamlebåndet.

Legge til flere data for å se resultatene for trinnvis kopi

Når du er ferdig med den første datasamlebåndkjøringen, kan vi prøve å legge til flere data i datakildetabellen for datalageret for å se om dette datasamlebåndet kan kopiere de trinnvise dataene.

Trinn 1: Legge til flere data i kilde

Sett inn nye data i datalageret ved å kjøre følgende spørring:

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')

De oppdaterte dataene for data_source_table er:

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

Trinn 2:Utløse en annen datasamlebåndkjøring og overvåke resultatet

Gå tilbake til datasamlebåndsiden. Velg Kjør under Hjem-fanen på den øverste linjen på nytt. Datasamlebåndet starter, og du kan overvåke datasamlebåndet under Utdata.

Gå til Lakehouse, du finner den nye kopierte datafilen under mappen du har angitt, og du kan velge filen for å forhåndsvise de kopierte dataene. Du ser at de trinnvise dataene vises i denne filen.

Skjermbilde som viser lakehouse-data for den andre datasamlebåndkjøringen.

Skjermbilde som viser forhåndsvisning av lakehouse-data for den andre datasamlebåndkjøringen.

Deretter kan du gå videre for å lære mer om kopiering fra Azure Blob Storage til Lakehouse.