Gegevens opnemen in het magazijn

Van toepassing op:✅ Warehouse in Microsoft Fabric

Warehouse in Microsoft Fabric biedt ingebouwde hulpprogramma's voor gegevensopname. Gebruik deze tools om gegevens op grote schaal in datawarehouses in te voeren met behulp van codevrije of coderijke ervaringen.

Een hulpprogramma voor gegevensopname kiezen

Kies een optie voor gegevensopname op basis van de volgende criteria:

  • Gebruik de instructie COPY (Transact-SQL) voor gegevensopnamebewerkingen met uitgebreide code. Het biedt de hoogste doorvoer voor data-inname. Gebruik deze wanneer u gegevensopname moet toevoegen als onderdeel van uw Transact-SQL logica.
    • Zie Gegevens opnemen met behulp van de COPY-instructie om aan de slag te gaan.
    • De Warehouse ondersteunt ook het traditionele BULK INSERT statement om compatibiliteitsredenen. In Fabric Data Warehouse komt deze instructie overeen met het gedrag van COPY INTO met klassieke laadopties.
    • De COPY instructie in Warehouse ondersteunt gegevensbronnen uit Azure-opslagaccounts en OneLake Lakehouse-mappen.
    • Specificeer Workspace Identity in de CREDENTIAL clausule dat je de Fabric-workspaceidentiteit moet imiteren bij het benaderen van de broncode. Bijvoorbeeld: CREDENTIAL = (IDENTITY = 'Workspace Identity'). De instructie blijft draaien in de SQL-beveiligingscontext van de huidige gebruiker.
  • Gebruik BCP-API (preview) voor directe opname aan de clientzijde wanneer gegevens zich in de toepassingslaag bevinden en u kunt bestanden niet eerst fasen.
    • Zie Gegevens opnemen met behulp van BCP API (preview) om aan de slag te gaan.
    • BCP-API ondersteunt bcp.exe scripts en toepassings-API's, zoals C# SqlBulkCopy en JavaSQLServerBulkCopy.
    • Voor bestandsgebaseerde gegevensinname met de hoogste doorvoer geeft u de voorkeur aan COPY INTO wanneer staging mogelijk is.
  • Gebruik pijplijnen voor codevrije of lage code, robuuste werkstromen voor gegevensopname die herhaaldelijk, volgens een schema worden uitgevoerd of waarvoor grote hoeveelheden gegevens nodig zijn.
    • Zie Gegevens opnemen in uw magazijn met behulp van pijplijnen om aan de slag te gaan.
    • Met behulp van pijplijnen kunt u robuuste werkstromen organiseren voor een volledige ETL-ervaring (Extract, Transform, Load). Deze ervaring omvat activiteiten om de doelomgeving voor te bereiden, aangepaste Transact-SQL-instructies uit te voeren, opzoekacties uit te voeren of gegevens van een bron naar een bestemming te kopiëren.
  • Gebruik gegevensstromen voor een codevrije ervaring waarmee aangepaste transformaties op brongegevens kunnen worden toegepast voordat ze worden geïmporteerd.
    • Zie Gegevens opnemen met behulp van een gegevensstroom om aan de slag te gaan.
    • Deze transformaties omvatten (maar zijn niet beperkt tot) het wijzigen van gegevenstypen, het toevoegen of verwijderen van kolommen of het gebruik van functies om berekende kolommen te produceren.
  • Gebruik T-SQL-opname voor ervaringen met uitgebreide code om nieuwe tabellen te maken of bestaande tabellen bij te werken met brongegevens in dezelfde werkruimte of externe opslag.
    • Zie Gegevens opnemen in uw warehouse met behulp van Transact-SQL om aan de slag te gaan.
    • Gebruik Transact-SQL functies zoals INSERT...SELECT, SELECT INTO of CREATE TABLE AS SELECT (CTAS) om gegevens te lezen uit tabellen die verwijzen naar andere magazijnen, lakehouses of gespiegelde databases in dezelfde werkruimte. U kunt deze functies ook gebruiken om gegevens te lezen uit de functie OPENROWSET die verwijst naar bestanden in externe Azure-opslagaccounts.
    • U kunt ook cross-database query's schrijven tussen verschillende datawarehouses in uw Fabric-werkruimte.

Ondersteunde gegevensindelingen en -bronnen

Gegevensopname voor Warehouse in Microsoft Fabric ondersteunt veel gegevensindelingen en -bronnen. Elke optie die in dit artikel wordt beschreven, bevat een eigen lijst met ondersteunde gegevensconnectortypen en gegevensindelingen.

Voor T-SQL-opname moeten tabelgegevensbronnen zich in dezelfde Microsoft Fabric werkruimte bevinden en moeten bestandsgegevensbronnen zich in Azure Data Lake of Azure Blob-opslag bevinden. U kunt query's uitvoeren op gegevens met behulp van driedelige naamgeving of de OPENROWSET functie voor de brongegevens. Tabelgegevensbronnen kunnen verwijzen naar Delta Lake-gegevenssets, terwijl OPENROWSET kan verwijzen naar Parquet-, CSV- of JSONL-bestanden in Azure Data Lake of Azure Blob-opslag.

Stel dat een werkruimte twee magazijnen heeft met de naam Inventory en Sales. Een query zoals de volgende maakt een nieuwe tabel in het Inventory magazijn met de inhoud van een tabel in het Inventory magazijn die is gekoppeld aan een tabel in het Sales magazijn en met externe bestanden met klantgegevens:

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

Het lezen van gegevens met behulp OPENROWSET van kan langzamer zijn dan het uitvoeren van query's op gegevens uit een tabel. Als u van plan bent om herhaaldelijk toegang te krijgen tot dezelfde externe gegevens, kunt u overwegen deze op te nemen in een toegewezen tabel om de prestaties en queryefficiëntie te verbeteren.

De COPY (Transact-SQL) -instructie ondersteunt de bestandsformaten CSV, JSONL en PARQUET. Ondersteunde databronnen zijn onder andere Azure Data Lake Storage (ADLS) Gen2, Azure Blob Storage en OneLake.

Voor directe opnamescenario's aan de clientzijde ondersteunt BCP-API (Preview) hulpprogramma's en API's zoals bcp.exe, C# SqlBulkCopyen Java SQLServerBulkCopy via SQL-verbindingen zonder eerst faseringsbestanden.

Pijplijnen en gegevensstromen ondersteunen een groot aantal gegevensbronnen en gegevensindelingen. Zie Pijplijnen en gegevensstromen voor meer informatie.

Gebruikmaken van Workspace Identity met COPY INTO

Gebruik Workspace Identity met COPY INTO om toegang tot de brondata te scheiden van de toestemming om naar de target warehouse-tabel te schrijven. Workspace Identity wordt ondersteund voor Azure Blob Storage, ADLS Gen2 en OneLake-bronnen. De instructie draait in de SQL-beveiligingscontext van de huidige gebruiker. De WITH (CREDENTIAL = (IDENTITY = 'Workspace Identity'))-clausule staat alleen toe dat COPY INTO zich voordoet als de identiteit van de werkruimte wanneer COPY INTO toegang heeft tot de bron. Alle SQL-rechten en auditattributie blijven gekoppeld aan de uitvoerende gebruiker.

Zonder Workspace Identity kan een gebruiker die via het delen van items toegang krijgt tot de warehouse, COPY INTO uitvoeren met ten minste de machtiging 'Item lezen' en de vereiste SQL-rechten.

Voltooi de volgende configuratie voordat je COPY INTO uitvoert met Workspace Identity:

  1. Configureer een werkruimteidentiteit voor de werkruimte die het doel-magazijn bevat.
  2. Geef de werkruimte-identiteit toegang tot de bron:
    • Voor Azure Blob Storage en ADLS Gen2 zoekt u de werkruimteidentiteit op de naam van de werkruimte en wijst u de rol Storage Blob Data Reader toe aan het opslagaccount of de container. Voor ADLS Gen2-directory-toegang verleen je de vereiste ACL-rechten. Ken rechten toe aan de workspace-identiteit zoals je dat zou doen aan een Microsoft Entra-gebruiker.
    • Voor OneLake zoek je de werkruimte-identiteit op aan de hand van de naam van de werkruimte, voeg je deze toe aan de werkruimte die de brongegevens bevat en wijs je ten minste de werkruimterol Contributor toe.
  3. Wijs de uitvoerende gebruiker ten minste de Viewer-rol toe op de werkruimte die het doelwarehouse bevat. Itemrechten alleen geven een gebruiker geen toestemming om de workspace-identiteit te imiteren. De vereiste voor werkruimte-rol geldt alleen wanneer de gebruiker de Workspace Identity specificeert.
  4. Verleen de uitvoerende gebruiker INSERT toestemming voor de doel-tabel. Als Workspace Identity de referentie is, is ADMINISTER DATABASE BULK OPERATIONS toestemming niet vereist.

Het volgende voorbeeld laadt een CSV-bestand van OneLake door Workspace Identity te imiteren voor brontoegang:

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

Beleid voor gevoeligheidslabels verschilt per organisatie. COPY INTO kan falen wanneer de bestemming een gevoeligheidslabel heeft met beperkingen die de operatie verhinderen. Als een gevoeligheidslabel de fout veroorzaakt, verwijder dan het label van de bestemming voordat je het commando opnieuw probeert.

Beste praktijken

Het COPY commando in Warehouse in Microsoft Fabric biedt een eenvoudige, flexibele en snelle interface voor het invoeren van data met hoge doorvoer voor SQL-workloads van Azure Storage en OneLake.

U kunt ook de T-SQL-taal gebruiken om een nieuwe tabel te maken en deze vervolgens in te voegen en vervolgens rijen met gegevens bij te werken en te verwijderen. U kunt gegevens uit elke database in de Microsoft Fabric werkruimte invoegen met behulp van query's voor meerdere databases. Als u gegevens van een Lakehouse naar een magazijn wilt opnemen, kunt u dit doen met een query voor meerdere databases. Voorbeeld:

INSERT INTO MyWarehouseTable
SELECT * FROM MyLakehouse.dbo.MyLakehouseTable;
  • Vermijd het opnemen van gegevens met behulp van singleton-instructies INSERT , omdat deze aanpak slechte prestaties veroorzaakt voor query's en updates. Als u singleton-instructies INSERT voor gegevensopname opeenvolgend gebruikt, maakt u een nieuwe tabel met behulp van CREATE TABLE AS SELECT (CTAS) of INSERT...SELECT patronen, verwijdert u de oorspronkelijke tabel en maakt u de tabel opnieuw op basis van de tabel die u hebt gemaakt met behulp van CREATE TABLE AS SELECT (CTAS).
    • Het verwijderen van uw bestaande tabel is van invloed op uw semantische model, inclusief aangepaste metingen of aanpassingen die u mogelijk hebt aangebracht in het semantische model.
  • Wanneer u met externe gegevens aan bestanden werkt, moet u ervoor zorgen dat bestanden ten minste 4 MB groot zijn.
  • Voor grote gecomprimeerde CSV-bestanden kunt u overwegen om uw bestand op te splitsen in meerdere bestanden.
  • Azure Data Lake Storage (ADLS) Gen2 biedt betere prestaties dan Azure Blob Storage (verouderd). Overweeg waar mogelijk een ADLS Gen2-account te gebruiken.
  • Voor pijplijnen die regelmatig worden uitgevoerd, kunt u overwegen om uw Azure-opslagaccount te isoleren van andere services die tegelijkertijd toegang hebben tot dezelfde bestanden.
  • Met expliciete transacties kunt u meerdere gegevenswijzigingen groeperen, zodat ze alleen zichtbaar zijn bij het lezen van een of meer tabellen wanneer de transactie volledig is doorgevoerd. U kunt de transactie ook terugdraaien als een van de wijzigingen mislukt.
  • Als een SELECT transactie zich binnen een transactie bevindt en voorafging door gegevensinvoegingen, kunnen de automatisch gegenereerde statistieken onnauwkeurig zijn na een terugdraaiactie. Onnauwkeurige statistieken kunnen leiden tot niet-geoptimaliseerde queryplannen en uitvoeringstijden. Als u een transactie terugdraait met SELECT’s na een grote INSERT, werk de statistieken bij voor de kolommen die in uw SELECT worden genoemd.

Note

Ongeacht hoe u gegevens opneemt in magazijnen, optimaliseert de gegevensopnametaak de parquet-bestanden die worden geproduceerd met behulp van V-Order schrijfoptimalisatie. V-Order optimaliseert parquet-bestanden om razendsnelle leesbewerkingen mogelijk te maken onder de Microsoft Fabric-rekenprogramma's zoals Power BI, SQL, Spark en andere. Query's voor magazijnen profiteren doorgaans van snellere leestijden van query's met deze optimalisatie, terwijl de parquet-bestanden nog steeds 100% voldoen aan hun opensource-specificatie. Schakel V-volgorde niet uit, omdat dit van invloed kan zijn op de leesprestaties. Zie V-Order begrijpen en beheren voor magazijn voor meer informatie over V-Order.

Veelgestelde vragen over gegevensopname voor Fabric Data Warehouse

Wat is de richtlijnen voor het splitsen van bestanden voor de opdracht COPY voor het laden van gecomprimeerde CSV-bestanden?

Overweeg om grote CSV-bestanden te splitsen, met name wanneer het aantal bestanden klein is, maar bestanden minimaal 4 MB bewaren voor betere prestaties.

Wat zijn de richtlijnen voor het splitsen van bestanden voor de COPY-opdracht voor het laden van Parquet-bestanden?

Overweeg om grote Parquet-bestanden te splitsen, met name wanneer het aantal bestanden klein is.

Zijn er beperkingen voor het aantal of de grootte van bestanden?

Er gelden geen beperkingen voor het aantal bestanden of de grootte van bestanden. Gebruik voor de beste prestaties echter bestanden die ten minste 4 MB zijn.

Welke credential gebruikt het COPY-commando als ik er geen specificeer?

Standaard gebruikt COPY INTO de Microsoft Entra-identiteit van de uitvoerende gebruiker voor brontoegang.