Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Gjelder for:✅ Lager i Microsoft Fabric
Transact-SQL-språket tilbyr alternativer du kan bruke til å laste inn data i stor skala fra eksisterende tabeller i lakehouse og lageret til nye tabeller på lageret. Disse alternativene er praktiske hvis du trenger å opprette nye versjoner av en tabell med aggregerte data, versjoner av tabeller med et delsett av radene, eller for å opprette en tabell som et resultat av en kompleks spørring. La oss utforske noen eksempler.
Velg en T-SQL-inntakssetning
T-SQL-språket gir et rikt sett med setninger som du kan bruke til å importere og transformere data i lageret ditt. Du kan laste inn data i nye eller eksisterende tabeller, legge til nye rader, transformere data under innspilling, eller synkronisere endringer med eksisterende data. Warehouse i Microsoft Fabric støtter følgende T-SQL-inntakssetninger:
-
CREATE TABLE AS SELECT(CTAS)-setning som lar deg opprette en ny tabell i lageret fra utdataene fra enSELECTsetning. -
SELECT INTOspørringssetning som lar deg velge resultater fra en tabellkilde, og omdirigere resultatene til en ny tabell. Dette er en standardfunksjon i T-SQL-språk. -
INSERT ... SELECTlegger til spørringsresultater i destinasjonstabellen. Bruk denne setningen når du vil laste inn en ny batch eller et inkrementelt delsett i en tabell hvis skjema du kontrollerer. -
MERGEsammenligner kilde- og destinasjonsrader og setter betinget inn, oppdaterer eller sletter destinasjonsrader. Bruk denne setningen når du trenger å synkronisere nye og endrede rader, eller avstemme en destinasjon med et komplett kildebilde.
Velg en setning basert på om destinasjonstabellen allerede eksisterer, og om du vil opprette, legge til eller synkronisere data. Kilden til hver setning er en T-SQL-spørring. Du kan bruke støttede uttrykk, funksjoner, filtre, joins og aggregeringer for å forme dataene under innspillingen. Du kan bruke følgende datakilder til å lese dataene i dine T-SQL-setninger:
- Lese en lagertabell, for eksempel en oppsamlingstabell.
- Lese en Lakehouse Delta Lake-mappe ved hjelp av en autogenerert tabell i SQL Analytics-endepunktet for Lakehouse.
- Lese CSV-, Parquet- eller JSONL-filer direkte fra Azure Data Lake eller Azure Blob Storage ved hjelp av
OPENROWSETfunksjonen.
Bruk CTAS for å lage en tabell
CTAS lager destinasjonstabellen og laster inn spørringsresultatene i én operasjon.
Det første eksempelet viser hvordan man lager en ny tabell som er en kopi av den eksisterende dbo.TaxiTrips tabellen, men filtrert til kun å inkludere data fra året 2023:
CREATE TABLE dbo.TaxiTrips_2023
AS
SELECT *
FROM dbo.TaxiTrips
WHERE DATEPART(YEAR, tpep_pickup_datetime) = '2023';
Bruk CTAS for å lage og fylle ut en ny tabell fra spørringsresultatene. Denne metoden er nyttig når destinasjonstabellen ikke eksisterer, eller når du ønsker å materialisere transformerte eller kombinerte data fra en eller flere kilder.
Bruk VELG INN for å lage en tabell
SELECT ... INTO Oppretter også en destinasjonstabell fra spørringsresultater:
SELECT *
INTO dbo.TaxiTrips_2023
FROM MyLakehouse.dbo.TaxiTrips
WHERE DATEPART(YEAR, tpep_pickup_datetime) = '2023';
Både CTAS og SELECT ... INTO utleder destinasjonskolonner fra spørringsresultatet. Kast eksplisitt uttrykk når destinasjonen krever en spesifikk datatype, presisjon eller lengde.
Bruk INSERT ... SELECT for å legge til data
INSERT ... SELECT laster inn spørringsresultater i en eksisterende tabell.
Du kan legge til data i en tabell ved å transformere data fra en ekstern, offentlig tilgjengelig Parquet-fil:
INSERT INTO dbo.<table name>
SELECT *
FROM OPENROWSET(BULK 'https://<storage account>.blob.core.windows.net/public/<subfolder>/<file name>.parquet') AS data;
Bruk MERGE for å synkronisere data
MERGE matcher kilde- og destinasjonsrader med en stabil nøkkel. Følgende mønster forutsetter at allerede dbo.DimCustomer eksisterer med kolonnene som brukes av setningen. Sørg for at kilden returnerer maksimalt én rad for hver destinasjonsnøkkel.
MERGE dbo.DimCustomer AS target
USING staging.Customers AS source
ON target.CustomerID = source.CustomerID
WHEN MATCHED AND source.ModifiedDate > target.ModifiedDate THEN
UPDATE SET CustomerName = source.CustomerName, City = source.City,
ModifiedDate = source.ModifiedDate
WHEN NOT MATCHED BY TARGET THEN
INSERT (CustomerID, CustomerName, City, ModifiedDate)
VALUES (source.CustomerID, source.CustomerName, source.City, source.ModifiedDate);
Bruk WHEN NOT MATCHED BY SOURCE THEN DELETE kun når kildespørringen representerer det komplette autoritative datasettet for radene i omfanget. Ikke bruk den klausulen med en inkrementell kildebatch, fordi destinasjonsrader som mangler i batchen kan bli slettet.
Velg en datakilde
Inntakssetningene fungerer konsekvent på tvers av støttede kildetyper. Bare kildereferansen endres.
Filer i en innsjø
Bruk OPENROWSET til å lese Parquet-, CSV- eller JSONL-filer i OneLake, Azure Data Lake Storage, eller Azure Blob Storage. Du kan målrette én fil, flere filer med joker, eller partisjonerte mapper.
For filstier, skjemainferens, partisjonsfiltrering, metadatafunksjoner og eksempler for alle fire inntakssetninger, se Ingest and transform lake data with OPENROWSET og T-SQL.
Delta-bord i et innsjøhus
SQL-analyseendepunktet til et lakehouse eksponerer Delta-tabeller i sitt /Tables område. Fra et lager i samme arbeidsområde, referer til en tabell ved å bruke det tredelte navnet <lakehouse>.<schema>.<table>.
Dette er ikke begrenset til Delta-bord som fysisk oppbevares i innsjøhuset. Tabeller som er eksponert gjennom OneLake-snarveier i /Tables området kan også referere til data lagret andre steder, inkludert lakehouse-området /Files , ekstern lagring som ADLS eller Amazon S3, speildata og OneLake-data i andre arbeidsområder.
Ved å bruke denne arkitekturen kan du spørre snarveisdata gjennom lakehouse SQL-analyseendepunkt uten å kopiere dataene inn i lakehouse.
For tabellopprettelse, inkrementelle laster og synkroniseringseksempler, se Ingest Delta Lake-tabeller med T-SQL.
Tabeller i det nåværende lageret
Bruk et todelt navn, for <schema>.<table> eksempel for å importere data fra en tabell i det nåværende lageret.
For Bronse-til-Sølv-til-Gull-eksempler som kobler sammen, aggregerer og inkrementelt laster tabeller inne i ett lager, se Ingest from warehouse-tabeller og speilede databaser med T-SQL.
Speilede databaser og andre arbeidsområdeelementer
For å importere data fra en speilet database, et annet lager eller et annet støttet element i samme arbeidsområde, legg varen til i Utforsker og bruk det tredelte navnet <item>.<schema>.<table>.
Hvis du vil lære mer om spørringer på tvers av lager, kan du se Skrive en SQL-spørring over flere databaser.
For eksempler som bruker begge navnemønstrene, se Ingest from warehouse-tabeller og speilede databaser med T-SQL.
Revider og overvåk T-SQL-inntak
CTAS, SELECT ... INTO, , INSERT ... SELECTog operasjoner MERGE vises i lagerets søkehistorikk/aktivitet. Bruk spørringsinnsikter for å gjennomgå utførelsesdetaljer og feilsøke inntastingsforespørsler.
Alternativer for datainntak
Bruk T-SQL-inntak når belastningen inkluderer filtrering, typekonvertering, joins, beregninger, aggregering eller synkronisering. Velg et annet alternativ når: Andre måter å importere data til lageret ditt på inkluderer:
- Inntak av data ved hjelp av COPY-setningen
- Ta inn data ved hjelp av datasamlebånd
- Inntak data ved hjelp av en dataflyt