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.
Opprette en ny tabell med resultatet av en spørring
Med Warehouse i Microsoft Fabric kan du enkelt opprette en ny tabell basert på et resultat av T-SQL-spørring ved hjelp av følgende T-SQL-setninger:
-
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.
Disse to setningene er like, så følgende eksempler er fokusert på CTAS-setningen.
CTAS-setningen kjører inntaksoperasjonen inn i den nye tabellen parallelt, noe som gjør den svært effektiv for datatransformasjon og oppretting av nye tabeller i arbeidsområdet.
Du kan bruke følgende alternativer for SELECT delen av CTAS-setningen:
- 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.
For å laste inn et eksempeldatasett, følg trinnene i Ingest data into the Warehouse ved å bruke COPY-setningen for å lage eksempeldataene i lageret ditt.
Opprett tabell fra Lager-tabell
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';
Opprett tabell fra Delta Lake-mappen
Delta Lake-mappene som beholdes i OneLake, representeres automatisk som tabeller hvis de lagres i /Tables-mappen i et lakehouse. Følgende kode oppretter en ny tabell TaxiTrips_2023 fra Delta Lake-mappen/Tables/TaxiTrips i MyLakehouse lakehouse:
CREATE TABLE dbo.TaxiTrips_2023
AS
SELECT *
FROM MyLakehouse.dbo.TaxiTrips
WHERE DATEPART(YEAR, tpep_pickup_datetime) = '2023';
Du kan referere til Delta Lake-mappen ved hjelp av notasjonen med tre delers navn som refererer til lakehouse der filene er lagret. Alle eksempler som vises i forrige del, gjelder for Delta Lake-mapper.
Opprett tabell fra CSV/Parquet/JSONL-fil
Du kan også lage en ny tabell direkte fra en ekstern fil ved å bruke funksjonen OPENROWSET . For eksempel bruker følgende eksempel-T-SQL plassholdere for å demonstrere hvordan du kan importere en offentlig Parquet-fil.
CREATE TABLE dbo.<table_name>
AS
SELECT *
FROM OPENROWSET(BULK 'https://<storage account>.blob.core.windows.net/public/<subfolder>/<file name>.parquet') AS data;
Du kan opprette en ny tabell ved å transformere data fra en ekstern, offentlig tilgjengelig CSV-fil:
CREATE TABLE dbo.<table name>
AS
SELECT *
FROM OPENROWSET(BULK 'https://<storage account>.blob.core.windows.net/public/<subfolder>/<file name>.csv') AS data;
Eller du kan lage en ny tabell ved å transformere data fra en ekstern, offentlig tilgjengelig JSONL-fil:
CREATE TABLE dbo.<table name>
AS
SELECT *
FROM OPENROWSET(BULK 'https://<storage account>.blob.core.windows.net/public/<subfolder>/<file name>.jsonl') AS data;
- For mer informasjon og eksempler på å spørre eksterne data, se Søk i eksterne data lake-filer ved å bruke Fabric datalager eller SQL analytics-endepunktet.
- Hvis du vil ha flere eksempler og syntaksreferanse, kan du se CREATE TABLE AS SELECT (Transact-SQL).
Inntak av data i eksisterende tabeller med T-SQL-spørringer
De forrige eksemplene oppretter nye tabeller basert på resultatet av en spørring. Hvis du vil replikere eksemplene, men på eksisterende tabeller, INSERT ... SELECT kan mønsteret brukes.
Innta data fra Lager-tabell
Følgende kode inntar nye data fra en lagertabell til en eksisterende tabell:
INSERT INTO dbo.TaxiTrips_2023
SELECT *
FROM dbo.TaxiTrips
WHERE DATEPART(YEAR, tpep_pickup_datetime) = '2023';
Spørringsvilkårene for setningen SELECT kan være en hvilken som helst gyldig spørring, så lenge de resulterende spørringskolonnetypene justeres med kolonnene i måltabellen. Hvis kolonnenavn er angitt og bare inneholder et delsett av kolonnene fra måltabellen, lastes alle andre kolonner inn som NULL. Hvis du vil ha mer informasjon, kan du se Bruke INSERT INTO... VELG for masseimport av data med minimal logging og parallellitet.
Innta data fra Delta Lake-mappen
Delta Lake-mappene som beholdes i OneLake, representeres automatisk som tabeller hvis de er lagret i /Tables en mappe i et innsjøhus.
Følgende kode henter inn nye data fra Delta Lake-mappeseksjonen /Tables/TaxiTrips i MyLakehouse* innsjøhuset.
INSERT INTO dbo.TaxiTrips_2023
SELECT *
FROM MyLakehouse.dbo.TaxiTrips
WHERE DATEPART(YEAR, tpep_pickup_datetime) = '2023';
Importere data fra CSV/Parquet/JSONL-fil
Du kan bruke OPENROWSET funksjonen som kilde for å importere Parquet-, CSV- eller JSON-filer fra lagring:
INSERT INTO dbo.<table name>
SELECT *
FROM OPENROWSET(BULK 'https://<storage account>.blob.core.windows.net/public/<subfolder>/<file name>') AS data
WHERE DATEPART(YEAR, tpep_pickup_datetime) = '2023';
Du kan lese flere filer ved å bruke jokertegn som *.parquet, eller ved å målrette mot partisjonerte kataloger som /year=*/month=*. Hvis du vil optimalisere ytelsen, kan du bruke filtre i WHERE-setningsdelen for å eliminere unødvendige rader og partisjoner under spørringskjøring.
Dette eksemplet ligner på de som brukes i inntak med COPY INTO. KOMMANDOEN KOPIER INN er enklere å bruke, spesielt for enkel kilde-til-mål-datainnlasting. Hvis du imidlertid trenger å transformere kildedata (for eksempel konvertere verdier eller slå sammen med andre tabeller), gir bruk INSERT ... SELECT deg fleksibiliteten til å utføre transformasjoner under inntak.
Ta inn data fra OneLake
Du kan bruke OPENROWSET funksjonen som en kilde for å innta data fra Fabric OneLake-lagring. Erstatt {workspaceId} og {lakehouseId} med den tilsvarende arbeidsområdet og GUID-en for lakehouse i følgende eksempel:
INSERT INTO dbo.TaxiTrips_2023
SELECT *
FROM OPENROWSET(BULK 'https://onelake.dfs.fabric.microsoft.com/{workspaceId}/{lakehouseId}/Files/year=*/month=*/*.parquet') AS data
WHERE data.filepath(1) = '2023'
Dette eksemplet bygger på det forrige som leser data fra Azure Data Lake Storage. Bruk denne tilnærmingen når du trenger å transformere kildedata, for eksempel ved å konvertere verdier, ved å koble til andre tabeller, eller ved å lese spesifikke partisjoner. I slike tilfeller gir bruk INSERT ... SELECT fleksibiliteten til å bruke transformasjoner under datainntak.
Innta data fra tabeller på ulike varehus og lakehouses
For både CREATE TABLE AS SELECT og INSERT ... SELECTkan SELECT uttrykket også referere til tabeller på lagre som er forskjellige fra lageret der måltabellen er lagret, ved hjelp av krysslagerspørringer. Dette kan oppnås ved hjelp av den tredelte navnekonvensjonen [warehouse_or_lakehouse_name.][schema_name.]table_name. Anta for eksempel at du har følgende arbeidsområderessurser:
- Et innsjøhus oppkalt
taxi_lakehousemed de nyeste dataene. - Et lager med navnet
reference_warehousetabeller som brukes til referansedata. - Et lager med navnet
research_warehouseder måltabellen opprettes.
En ny tabell kan opprettes som bruker tredelt navngivning til å kombinere data fra tabeller på disse arbeidsområderessursene:
CREATE TABLE research_warehouse.dbo.taxi_trips
AS
SELECT *
FROM taxi_lakehouse.dbo.TaxiTrips AS latest
INNER JOIN reference_warehouse.dbo.TaxiTrips AS reference
ON latest.vendorId_lpep = reference.vendorId_lpep;
Hvis du vil lære mer om spørringer på tvers av lager, kan du se Skrive en SQL-spørring over flere databaser.
Revider og overvåk T-SQL-inntak
Både CTAS operasjoner INSERT ... SELECT utført via T-SQL vises i lagerets spørringshistorikk/aktivitet, og kan overvåkes sammen med andre lageroperasjoner.
Alternativer for datainntak
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