Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:✅ Lager i Microsoft Fabric
Transact-SQL-språket erbjuder alternativ som du kan använda för att ladda data på stor skala från befintliga tabeller i ditt sjöhus och lager till nya tabeller i ditt lager. De här alternativen är praktiska om du behöver skapa nya versioner av en tabell med aggregerade data, versioner av tabeller med en delmängd av raderna eller för att skapa en tabell som ett resultat av en komplex fråga. Nu ska vi utforska några exempel.
Skapa en ny tabell med resultatet av en fråga
Med Informationslager i Microsoft Fabric kan du enkelt skapa en ny tabell baserat på resultatet av T-SQL-frågan med hjälp av följande T-SQL-instruktioner:
-
CREATE TABLE AS SELECT(CTAS)-instruktion som gör att du kan skapa en ny tabell i ditt lager från utdata från enSELECT-instruktion. -
SELECT INTOfrågesats som gör att du kan välja resultat från valfri tabellkälla och omdirigera resultatet till en ny tabell. Det här är en standardfunktion i T-SQL-språket.
De här två uttrycken är liknande, så följande exempel fokuserar på CTAS-instruktionen.
CTAS-instruktionen kör inmatningsåtgärden till den nya tabellen parallellt, vilket gör den mycket effektiv för datatransformering och skapande av nya tabeller på din arbetsyta.
Du kan använda dessa alternativ för SELECT-delen av CTAS-instruktionen.
- Att läsa en lagertabell, till exempel en mellanlagringstabell.
- Läsa en Lakehouse Delta Lake-mapp med hjälp av en automatiskt genererad tabell i SQL-analysslutpunkten för Lakehouse.
- Läsa CSV-, Parquet- eller JSONL-filer direkt från Azure Data Lake eller Azure Blob Storage med hjälp av
OPENROWSETfunktionen.
Om du vill läsa in en exempeldatauppsättning följer du stegen i Mata in data i ditt lager med hjälp av COPY-instruktionen för att skapa exempeldata i ditt lager.
Skapa tabell från lagertabell
Det första exemplet visar hur du skapar en ny tabell som är en kopia av den befintliga dbo.TaxiTrips tabellen, men filtreras för att endast inkludera data från år 2023:
CREATE TABLE dbo.TaxiTrips_2023
AS
SELECT *
FROM dbo.TaxiTrips
WHERE DATEPART(YEAR, tpep_pickup_datetime) = '2023';
Skapa tabell från Delta Lake-mappen
Delta Lake-mapparna som sparas i OneLake representeras automatiskt som tabeller om de lagras i mappen /Tables i ett sjöhus. Följande kod skapar en ny tabell TaxiTrips_2023 från 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 referera till Delta Lake-katalogen med en tredelad notation som hänvisar till lakehouset där filerna lagras. Alla exempel som visas i föregående avsnitt gäller för Delta Lake-mappar.
Skapa tabell från CSV/Parquet/JSONL-fil
Du kan också skapa en ny tabell direkt från en extern fil med hjälp OPENROWSET av funktionen . I följande exempel använder T-SQL till exempel platshållare för att visa hur du kan importera 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 skapa en ny tabell genom att transformera data från en extern, offentligt tillgänglig 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;
Du kan också skapa en ny tabell genom att transformera data från en extern, offentligt tillgänglig 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;
- Mer information och exempel om hur du frågar efter externa data finns i Fråga externa data lake-filer med hjälp av Fabric Data Warehouse eller SQL-analysslutpunkten.
- Fler exempel och syntaxreferenser finns i CREATE TABLE AS SELECT (Transact-SQL).
Mata in data i befintliga tabeller med T-SQL-frågor
I föregående exempel skapas nya tabeller baserat på resultatet av en fråga. För att replikera exemplen men på befintliga tabeller kan INSERT ... SELECT mönstret användas.
Mata in data från lagertabellen
Följande kod matar in nya data från en lagertabell till en befintlig tabell:
INSERT INTO dbo.TaxiTrips_2023
SELECT *
FROM dbo.TaxiTrips
WHERE DATEPART(YEAR, tpep_pickup_datetime) = '2023';
Frågevillkoren för -instruktionen SELECT kan vara valfri giltig fråga, så länge de resulterande frågekolumntyperna överensstämmer med kolumnerna i måltabellen. Om kolumnnamn anges och endast innehåller en delmängd av kolumnerna från måltabellen läses alla andra kolumner in som NULL. För mer information, se använd INSERT INTO...SELECT till att massimportera data med minimal loggning och parallellitet.
Mata in data från Delta Lake-mappen
Delta Lake-mapparna som sparas i OneLake representeras automatiskt som tabeller om de lagras i /Tables mappen i ett sjöhus.
Följande kod matar in nya data från avsnittet Delta Lake-mappen /Tables/TaxiTrips i MyLakehouse* lakehouse.
INSERT INTO dbo.TaxiTrips_2023
SELECT *
FROM MyLakehouse.dbo.TaxiTrips
WHERE DATEPART(YEAR, tpep_pickup_datetime) = '2023';
Mata in data från CSV/Parquet/JSONL-fil
Du kan använda OPENROWSET funktionen som källa för att mata in Parquet-, CSV- eller JSON-filer från 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 läsa flera filer med jokertecken som *.parquet, eller genom att rikta in dig på partitionerade kataloger som /year=*/month=*. För att optimera prestandan använder du filter i WHERE-satsen för att eliminera onödiga rader och partitioner under frågekörningen.
Det här exemplet liknar de som används för inmatning med COPY INTO. COPY INTO-kommandot är enklare att använda, särskilt för enkla datainläsningar från källa till mål. Men om du behöver transformera källdata (till exempel konvertera värden eller ansluta till andra tabeller) ger INSERT ... SELECT dig flexibiliteten att utföra transformeringar vid inmatning.
Mata in data från OneLake
Du kan använda OPENROWSET funktionen som källa för att mata in data från Fabric OneLake Storage. Ersätt {workspaceId} och {lakehouseId} med motsvarande arbetsyta och lakehouse GUID i följande exempel:
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'
Det här exemplet bygger på det tidigare som läser data från Azure Data Lake Storage. Använd den här metoden när du behöver transformera källdata, till exempel genom att konvertera värden, ansluta till andra tabeller eller genom att läsa specifika partitioner. I sådana fall ger användning INSERT ... SELECT flexibiliteten att tillämpa transformeringar vid datainmatning.
Mata in data från tabeller på olika lager och sjöhus
För både CREATE TABLE AS SELECT och INSERT ... SELECT kan instruktionen SELECT även referera till tabeller i andra lager än det lager där måltabellen är lagrad, genom att använda frågor som går över flera lager. Detta kan uppnås med hjälp av namngivningskonventionen [warehouse_or_lakehouse_name.][schema_name.]table_namei tre delar . Anta till exempel att du har följande arbetsytetillgångar:
- Ett sjöhus med namnet
taxi_lakehousemed de senaste data. - Ett lager med namnet
reference_warehousemed tabeller som används för referensdata. - Ett lager med namnet
research_warehousedär måltabellen skapas.
En ny tabell kan skapas som använder namngivning i tre delar för att kombinera data från tabeller på dessa arbetsytetillgångar:
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;
Mer information om frågor mellan lager finns i Skriva en SQL-fråga mellan databaser.
Granska och övervaka T-SQL-inmatning
Både CTAS och åtgärder som INSERT ... SELECT körs via T-SQL visas i informationslagrets frågehistorik/aktivitet och kan övervakas tillsammans med andra informationslageråtgärder.
Datainmatningsalternativ
Andra sätt att mata in data i ditt lager är: