Mata in data i datalagret

Gäller för:✅ Lager i Microsoft Fabric

Datalager i Microsoft Fabric innehåller inbyggda datainmatningsverktyg. Använd dessa verktyg för att mata in data i lager i stor skala med hjälp av kodfria eller kodrika upplevelser.

Välj ett datainmatningsverktyg

Välj ett datainmatningsalternativ baserat på följande villkor:

  • Använd instruktionen COPY (Transact-SQL) för kodrika datainmatningsåtgärder. Det ger det högsta datainmatningsflödet. Använd den när du behöver lägga till datainmatning som en del av din Transact-SQL logik.
    • Information om hur du kommer igång finns i Mata in data med copy-instruktionen.
    • Warehouse stöder även den traditionella BULK INSERT-satsen av kompatibilitetsskäl. I Fabric Data Warehouse mappas den här satsen till COPY INTO-beteende med klassiska inläsningsalternativ.
    • Instruktionen COPY i Warehouse stöder datakällor från Azure Storage-konton och OneLake Lakehouse-mappar.
    • Ange Workspace Identity i klausulen CREDENTIAL att imitera Fabric-workspaceidentiteten när du använder källkoden. Till exempel CREDENTIAL = (IDENTITY = 'Workspace Identity'). Uttalandet fortsätter att köras i den nuvarande användarens SQL-säkerhetskontext.
  • Använd BCP API (förhandsversion) för direkt inmatning på klientsidan när data finns på programnivån och du inte kan mellanlagra filer först.
    • Information om hur du kommer igång finns i Mata in data med BCP API (förhandsversion).
    • BCP API stöder bcp.exe skript och program-API:er som C# SqlBulkCopy och Java SQLServerBulkCopy.
    • För filbaserad inmatning med högst dataflöde föredrar COPY INTO du när mellanlagring är möjlig.
  • Använd pipelines för kodfria eller lågkodsbaserade, robusta arbetsflöden för datainmatning som körs upprepade gånger, enligt ett schema eller som omfattar stora mängder data.
    • För att komma igång, se Importera data till ditt datalager med hjälp av pipelines.
    • Med hjälp av pipelines kan du orkestrera robusta arbetsflöden för en fullständig ETL-upplevelse (Extract, Transform, Load). Den här upplevelsen omfattar aktiviteter som hjälper dig att förbereda målmiljön, köra anpassade Transact-SQL-instruktioner, utföra sökningar eller kopiera data från en källa till ett mål.
  • Använd dataflöden för en kodfri upplevelse som tillåter anpassade transformeringar till källdata före inmatning.
    • Information om hur du kommer igång finns i Mata in data med hjälp av ett dataflöde.
    • Dessa transformeringar omfattar (men är inte begränsade till) ändring av datatyper, tillägg eller borttagning av kolumner eller användning av funktioner för att skapa beräknade kolumner.
  • Använd T-SQL-inmatning för kodrika funktioner för att skapa nya tabeller eller uppdatera befintliga med källdata på samma arbetsyta eller extern lagring.
    • Så här kommer du igång: se Mata in data i ditt datalager med hjälp av Transact-SQL.
    • Använd Transact-SQL funktioner som INSERT...SELECT, SELECT INTO eller CREATE TABLE AS SELECT (CTAS) för att läsa data från tabeller som refererar till andra lager, sjöhus eller speglade databaser på samma arbetsyta. Du kan också använda dessa funktioner för att läsa data från funktionen OPENROWSET som refererar till filer i externa Azure lagringskonton.
    • Du kan också skriva frågor mellan databaser mellan olika lager i din Fabric-arbetsyta.

Dataformat och källor som stöds

Datainmatning för Warehouse i Microsoft Fabric stöder många dataformat och källor. Varje alternativ som beskrivs i den här artikeln innehåller en egen lista över dataanslutningstyper och dataformat som stöds.

För T-SQL-inmatning måste tabelldatakällor finnas inom samma Microsoft Fabric arbetsyta och fildatakällor måste finnas i Azure Data Lake eller Azure Blob Storage. Du kan köra frågor mot data med hjälp av trepartsnamngivning eller OPENROWSET-funktionen för källdata. Tabelldatakällor kan referera till Delta Lake-datauppsättningar, medan OPENROWSET kan referera till Parquet-, CSV- eller JSONL-filer i Azure Data Lake eller Azure Blob Storage.

Anta till exempel att en arbetsyta har två lager med namnet Inventory och Sales. En fråga som följande skapar en ny tabell i Inventory lagret med innehållet i en tabell i Inventory lagret som är kopplad till en tabell i Sales lagret och med externa filer som innehåller kundinformation:

CREATE TABLE Inventory.dbo.RegionalSalesOrders
AS
SELECT 
    s.SalesOrders,
    i.ProductName,
    c.CustomerName
FROM Sales.dbo.SalesOrders s
JOIN Inventory.dbo.Products i
    ON s.ProductID = i.ProductID
JOIN OPENROWSET( BULK 'abfss://<container>@<storage>.dfs.core.windows.net/<customer-file>.csv' ) AS c
    ON s.CustomerID = c.CustomerID
WHERE s.Region = 'West region';

Note

Att läsa data med hjälp OPENROWSET av kan vara långsammare än att fråga efter data från en tabell. Om du planerar att komma åt samma externa data upprepade gånger bör du överväga att mata in dem i en dedikerad tabell för att förbättra prestanda och frågeeffektivitet.

COPY (Transact-SQL)-satsen stöder filformaten CSV, JSONL och PARQUET. Stödda datakällor inkluderar Azure Data Lake Storage (ADLS) Gen2, Azure Blob Storage och OneLake.

För direkt inmatning på klientsidan stöder BCP API (förhandsversion) verktyg och API:er som bcp.exe, C# SqlBulkCopyoch Java SQLServerBulkCopy över SQL-anslutningar utan mellanlagringsfiler först.

Pipelines och dataflöden stöder en mängd olika datakällor och dataformat. Mer information finns i Pipelines och Dataflöden.

Använd Workspace Identity med COPY INTO

Använd Workspace Identity med COPY INTO för att separera åtkomst till källdata från behörighet att skriva till måltabellen i datalagret. Workspace Identity stöds för Azure Blob Storage, ADLS Gen2 och OneLake-källor. Satsen körs i den aktuella användarens SQL-säkerhetskontext. Klausulen WITH (CREDENTIAL = (IDENTITY = 'Workspace Identity')) tillåter COPY INTO att utge sig för att vara arbetsytans identitet endast när den får åtkomst till källan. Alla SQL-behörigheter och revisionsattribution förblir kopplade till den exekverande användaren.

Utan Workspace Identity kan en användare som får tillgång till lagret via artikeldelning köra COPY INTO med minst behörighet för läsobjekt och de nödvändiga SQL-behörigheterna.

Gör följande installation innan du kör COPY INTO med Workspace Identity:

  1. Konfigurera en arbetsyteidentitet för den arbetsyta som innehåller mållagret.
  2. Bevilja arbetsytans identitet åtkomst till källan:
    • För Azure Blob Storage och ADLS Gen2, hitta arbetsytans identitet efter arbetsytans namn och tilldela Storage Blob Data Reader-rollen på lagringskontot eller containern. För ADLS Gen2-katalogåtkomst, bevilja de nödvändiga ACL-behörigheterna. Tilldela behörigheter till arbetsytans identitet på samma sätt som till en Microsoft Entra-användare.
    • För OneLake, hitta arbetsytans identitet via arbetsytans namn, lägg till den i arbetsytan som innehåller källdata och tilldela åtminstone rollen Bidragsgivare.
  3. Tilldela den användare som kör minst behörigheten Viewer på den arbetsyta som innehåller mållagret. Enbart objektbehörigheter ger inte en användare behörighet att agera som arbetsytans identitet. Kravet på arbetsyteroll gäller endast när användaren anger Workspace Identity.
  4. Ge den exekverande användaren INSERT behörighet på måltabellen. När Workspace Identity är inloggningsuppgiften krävs ingen ADMINISTER DATABASE BULK OPERATIONS behörighet.

Följande exempel laddar en CSV-fil från OneLake genom att utge sig för att vara Workspace Identity för källåtkomst:

COPY INTO dbo.SalesOrders
FROM 'https://onelake.dfs.fabric.microsoft.com/<workspace-id>/<item-id>/Files/orders/*.csv'
WITH (
    FILE_TYPE = 'CSV',
    FIRSTROW = 2,
    CREDENTIAL = (IDENTITY = 'Workspace Identity')
);

Important

Känslighetsetiketter varierar mellan organisationer. COPY INTO kan misslyckas när destinationen har en känslighetsetikett med begränsningar som förhindrar operationen. Om en känslighetsetikett orsakar felet, ta bort etiketten från destinationen innan du försöker om kommandot.

Metodtips

Kommandot COPY i Warehouse i Microsoft Fabric erbjuder ett enkelt, flexibelt och snabbt gränssnitt för högkapacitetsdatainsamling för SQL-arbetsbelastningar från Azure Storage och OneLake.

Du kan också använda T-SQL-språk för att skapa en ny tabell och sedan infoga i den och sedan uppdatera och ta bort rader med data. Du kan infoga data från valfri databas inom Microsoft Fabric-arbetsytan med hjälp av frågor över flera databaser. Om du vill mata in data från en Lakehouse till ett lager kan du göra detta med en fråga mellan databaser. Till exempel:

INSERT INTO MyWarehouseTable
SELECT * FROM MyLakehouse.dbo.MyLakehouseTable;
  • Undvik att mata in data med hjälp av singleton-instruktioner INSERT , eftersom den här metoden ger dåliga prestanda för frågor och uppdateringar. Om du använder singleton-instruktioner INSERT för datainmatning i följd, skapa en ny tabell med hjälp av CREATE TABLE AS SELECT (CTAS) eller INSERT...SELECT-mönster, ta bort den ursprungliga tabellen och skapa sedan tabellen igen från den tabell du skapade med hjälp av CREATE TABLE AS SELECT (CTAS).
    • Om du släpper din befintliga tabell påverkas din semantiska modell, inklusive eventuella anpassade mått eller anpassningar som du kan ha gjort i semantikmodellen.
  • När du arbetar med externa data på filer kontrollerar du att filerna är minst 4 MB stora.
  • För stora komprimerade CSV-filer bör du överväga att dela upp filen i flera filer.
  • Azure Data Lake Storage (ADLS) Gen2 ger bättre prestanda än Azure Blob Storage (äldre). Överväg att använda ett ADLS Gen2-konto när det är möjligt.
  • För pipelines som körs ofta bör du överväga att isolera ditt Azure-lagringskonto från andra tjänster som kan komma åt samma filer samtidigt.
  • Med explicita transaktioner kan du gruppera flera dataändringar så att de bara visas när du läser en eller flera tabeller när transaktionen är helt genomförd. Du kan också återställa transaktionen om någon av ändringarna misslyckas.
  • Om en SELECT är inom en transaktion och föregås av datainfogningar kan den automatiskt genererade statistiken vara felaktig efter en återställning. Felaktiga data kan leda till icke-optimerade frågeplaner och exekveringstider. Om du rullar tillbaka en transaktion med SELECTs efter en stor INSERT, uppdatera statistik för kolumnerna som nämns i din SELECT.

Note

Oavsett hur du matar in data i lager, optimerar datainmatningsuppgiften de parquet-filer som skapas med hjälp av optimering av V-Order-skrivning. V-Order optimerar parquet-filer för att aktivera blixtsnabba läsningar under Microsoft Fabric-beräkningsmotorer som Power BI, SQL, Spark och andra. Informationslagerfrågor i allmänhet drar nytta av snabbare lästider för frågor med den här optimeringen, samtidigt som du ser till att parquet-filerna är 100% kompatibla med specifikationen med öppen källkod. Inaktivera inte V-Order eftersom det kan påverka läsprestanda. Mer information om V-Order finns i Förstå och hantera V-Order for Warehouse.

Vanliga frågor och svar om datainmatning för Fabric Data Warehouse

Vad är vägledningen för fildelning för copy-kommandot som läser in komprimerade CSV-filer?

Överväg att dela upp stora CSV-filer, särskilt när antalet filer är litet, men behåll filer på minst 4 MB vardera för bättre prestanda.

Vad är vägledningen för fildelning för copy-kommandot som läser in Parquet-filer?

Överväg att dela upp stora Parquet-filer, särskilt när antalet filer är litet.

Finns det några begränsningar för antalet eller storleken på filer?

Det finns inga begränsningar för antalet eller storleken på filer. För bästa prestanda använder du dock filer som är minst 4 MB.

Vilken behörighet använder COPY-kommandot om jag inte anger någon?

Som standard COPY INTO använder den körande användarens Microsoft Entra-identitet för källåtkomst.