Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Gælder for:✅ Warehouse i Microsoft Fabric
Transact-SQL-sproget indeholder indstillinger, som du kan bruge til at indlæse data i stor skala fra eksisterende tabeller i dit lakehouse og lager i nye tabeller i dit lager. Disse indstillinger er praktiske, hvis du har brug for at oprette nye versioner af en tabel med aggregerede data, versioner af tabeller med et undersæt af rækkerne eller oprette en tabel som følge af en kompleks forespørgsel. Lad os udforske nogle eksempler.
Vælg en T-SQL indlæsningssætning
T-SQL-sproget giver et rigt sæt af sætninger, som du kan bruge til at indlæse og transformere data i dit lager. Du kan indlæse data i nye eller eksisterende tabeller, tilføje nye rækker, transformere data under indlæsning eller synkronisere ændringer med eksisterende data. Warehouse i Microsoft Fabric understøtter følgende T-SQL-indlæsningssætninger:
-
CREATE TABLE AS SELECT(CTAS)-sætning, der giver dig mulighed for at oprette en ny tabel på dit lager ud fra outputtet af enSELECTsætning. -
SELECT INTOquery-delsætning, der giver dig mulighed for at vælge resultater fra en hvilken som helst tabelkilde og omdirigere resultaterne til en ny tabel. Dette er en standardfunktion i T-SQL-sprog. -
INSERT ... SELECTtilføjer forespørgselsresultater til destinationstabellen. Brug denne sætning, når du vil indlæse en ny batch eller et inkrementelt delmængde i en tabel, hvis skema du kontrollerer. -
MERGEsammenligner kilde- og destinationsrækker og indsætter, opdaterer eller sletter destinationsrækker betinget. Brug denne sætning, når du skal synkronisere nye og ændrede rækker, eller afstemme en destination med et komplet kildebillede.
Vælg en sætning baseret på, om destinationstabellen allerede eksisterer, og om du vil oprette, tilføje eller synkronisere data. Kilden til hver sætning er en T-SQL-forespørgsel. Du kan bruge understøttede udtryk, funktioner, filtre, joins og aggregations til at forme dataene under indlæsningen. Du kan bruge følgende datakilder til at læse dataene i dine T-SQL-sætninger:
- Læser en lagertabel, f.eks. en midlertidig tabel.
- Læsning af en Lakehouse Delta Lake-mappe ved hjælp af en automatisk genereret tabel i SQL Analytics-slutpunktet for Lakehouse.
- Læsning af CSV-, Parquet- eller JSONL-filer direkte fra Azure Data Lake eller Azure Blob Storage ved hjælp af funktionen
OPENROWSET.
Brug CTAS til at oprette en tabel
CTAS opretter destinationstabellen og indlæser forespørgselsresultaterne i én operation.
Det første eksempel viser, hvordan man opretter en ny tabel, der er en kopi af den eksisterende dbo.TaxiTrips tabel, men filtreret til kun at inkludere data fra året 2023:
CREATE TABLE dbo.TaxiTrips_2023
AS
SELECT *
FROM dbo.TaxiTrips
WHERE DATEPART(YEAR, tpep_pickup_datetime) = '2023';
Brug CTAS til at oprette og udfylde en ny tabel ud fra forespørgselsresultater. Denne metode er nyttig, når destinationstabellen ikke eksisterer, eller når du ønsker at materialisere transformerede eller kombinerede data fra en eller flere kilder.
Brug SELECT INTO til at oprette en tabel
SELECT ... INTO opretter også en destinationstabel ud fra forespørgselsresultater:
SELECT *
INTO dbo.TaxiTrips_2023
FROM MyLakehouse.dbo.TaxiTrips
WHERE DATEPART(YEAR, tpep_pickup_datetime) = '2023';
Både CTAS og SELECT ... INTO udleder destinationskolonner ud fra forespørgselsresultatet. Kast eksplicit udtryk, når destinationen kræver en specifik datatype, præcision eller længde.
Brug INSERT ... SELECT for at tilføje data
INSERT ... SELECT Indlæser forespørgselsresultater i en eksisterende tabel.
Du kan tilføje data til en tabel ved at transformere data fra en ekstern, offentligt tilgængelig 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;
Brug MERGE til at synkronisere data
MERGE matcher kilde- og destinationsrækker med en stabil nøgle. Følgende mønster antager, at allerede dbo.DimCustomer eksisterer med de kolonner, der bruges af udsagnet. Sørg for, at kilden returnerer højst én række for hver destinationsnøgle.
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);
Brug WHEN NOT MATCHED BY SOURCE THEN DELETE kun, når kildeforespørgslen repræsenterer det komplette autoritative datasæt for rækkerne i omfanget. Brug ikke den klausul med en inkrementel kildebatch, fordi destinationsrækker, der mangler i batchen, kan blive slettet.
Vælg en datakilde
Indtagelsesudsagnene fungerer konsekvent på tværs af understøttede kildetyper. Kun kildereferencen ændrer sig.
Filer i en sø
Brug OPENROWSET til at læse Parquet-, CSV- eller JSONL-filer i OneLake, Azure Data Lake Storage eller Azure Blob Storage. Du kan målrette én fil, flere filer med wildcards eller partitionerede mapper.
For filstier, skema-inferens, partitionsfiltrering, metadatafunktioner og eksempler på alle fire ingestion-sætninger, se Ingest and transform lake data with OPENROWSET og T-SQL.
Delta-borde i et søhus
SQL-analyse-endpointet i et lakehouse eksponerer Delta-tabeller i dets /Tables område. Fra et lager i samme arbejdsområde refereres til en tabel ved at bruge det tredelte navn <lakehouse>.<schema>.<table>.
Dette er ikke begrænset til Delta-borde, der fysisk opbevares i søhuset. Tabeller, der er eksponeret via OneLake-genveje i /Tables området, kan også referere til data, der er gemt andre steder, herunder lakehouse-området /Files , ekstern lagring som ADLS eller Amazon S3, spejlede data og OneLake-data i andre arbejdsområder.
Ved at bruge denne arkitektur kan du forespørge genvejsdata gennem lakehouse SQL-analyseendpoint uden at kopiere dataene ind i lakehouse.
For tabeloprettelse, inkrementelle belastninger og synkroniseringseksempler, se Ingest Delta Lake-tabeller med T-SQL.
Tabeller i det nuværende lager
Brug et todelt navn, såsom <schema>.<table> at indlæse data fra en tabel i det aktuelle lager.
For eksempler fra Bronze til Sølv til Guld, der sammenføjer, aggregerer og inkrementelt indlæser tabeller inden for ét lager, se Ingest from warehouse tables and mirrored databases with T-SQL.
Spejlede databaser og andre arbejdsområders elementer
For at indlæse data fra en spejlet database, et andet lager eller et andet understøttet element i samme arbejdsområde, tilføj elementet til Stifinder og brug det tredelte navn <item>.<schema>.<table>.
Hvis du vil vide mere om forespørgsler på tværs af lagre, skal du se Skriv en SQL-forespørgsel på tværs af databaser.
For eksempler med begge navngivningsmønstre, se Ingest from warehouse tables og mirrored databases with T-SQL.
Revider og overvåg T-SQL-indlæsning
CTAS, SELECT ... INTO, , INSERT ... SELECTog operationer MERGE vises i lagerets forespørgselshistorik/aktivitet. Brug forespørgselsindsigter til at gennemgå udførelsesdetaljer og fejlfinde indtastningsforespørgsler.
Indstillinger for dataindtagelse
Brug T-SQL-indlæsning, når belastningen inkluderer filtrering, typekonvertering, joins, beregninger, aggregation eller synkronisering. Vælg en anden mulighed når: Andre måder at indlæse data i dit lager på inkluderer:
- Indfødning af data ved hjælp af COPY-sætningen
- Indtag data ved hjælp af pipelines
- Indlæsning af data ved hjælp af et dataflow