Gegevens opnemen in uw warehouse met Behulp van Transact-SQL

Van toepassing op:✅ Warehouse in Microsoft Fabric

De Transact-SQL-taal biedt opties die u kunt gebruiken om gegevens op schaal te laden vanuit bestaande tabellen in uw lakehouse en magazijn in nieuwe tabellen in uw magazijn. Deze opties zijn handig als u nieuwe versies van een tabel wilt maken met geaggregeerde gegevens, versies van tabellen met een subset van de rijen of om een tabel te maken als gevolg van een complexe query. Laten we enkele voorbeelden bekijken.

Kies een T-SQL ingestion statement

De T-SQL-taal biedt een rijke set statements die je kunt gebruiken om data in je warehouse te importeren en te transformeren. Je kunt data laden in nieuwe of bestaande tabellen, nieuwe rijen toevoegen, data transformeren tijdens het invoeren, of wijzigingen synchroniseren met bestaande data. Warehouse in Microsoft Fabric ondersteunt de volgende T-SQL-ingestie-instructies:

  • CREATE TABLE AS SELECT (CTAS)-instructie waarmee u een nieuwe tabel in uw magazijn kunt maken op basis van de uitvoer van een SELECT instructie.
  • SELECT INTO querycomponent waarmee u resultaten uit een tabelbron kunt selecteren en de resultaten omleidt naar een nieuwe tabel. Dit is een standaardfunctie in de T-SQL-taal.
  • INSERT ... SELECT voegt queryresultaten toe aan de bestemmingstabel. Gebruik deze instructie wanneer je een nieuwe batch of een incrementele subset wilt laden in een tabel waarvan je het schema beheert.
  • MERGE vergelijkt bron- en bestemmingsrijen en voegt bestemmingsrijen voorwaardelijk in, werkt bij of verwijdert ze voorwaardelijk. Gebruik deze statement wanneer je nieuwe en gewijzigde rijen moet synchroniseren, of een bestemming moet afstemmen met een volledige bronsnapshot.

Kies een instructie op basis van of de bestemmingstabel al bestaat en of je data wilt aanmaken, toevoegen of synchroniseren. De bron van elke statement is een T-SQL-query. Je kunt ondersteunde expressies, functies, filters, joins en aggregaties gebruiken om de data tijdens de ingestie vorm te geven. Je kunt de volgende databronnen gebruiken om de data in je T-SQL-statements te lezen:

  • Een magazijntabel lezen, zoals een faseringstabel.
  • Het lezen van een Lakehouse Delta Lake-directory met behulp van een automatisch gegenereerde tabel binnen het SQL Analytics-eindpunt voor Lakehouse.
  • CSV-, Parquet- of JSONL-bestanden rechtstreeks vanuit Azure Data Lake of Azure Blob Storage lezen met behulp van de OPENROWSET functie.

Gebruik CTAS om een tabel te maken

CTAS maakt de bestemmingstabel aan en laadt de queryresultaten in één bewerking. In het eerste voorbeeld ziet u hoe u een nieuwe tabel maakt die een kopie is van de bestaande dbo.TaxiTrips tabel, maar gefilterd om alleen gegevens uit het jaar 2023 op te nemen:

CREATE TABLE dbo.TaxiTrips_2023
AS
SELECT * 
FROM dbo.TaxiTrips 
WHERE DATEPART(YEAR, tpep_pickup_datetime) = '2023';

Gebruik CTAS om een nieuwe tabel aan te maken en te vullen op basis van queryresultaten. Deze methode is handig wanneer de bestemmingstabel niet bestaat of wanneer je getransformeerde of gecombineerde data uit één of meer bronnen wilt materialiseren.

Gebruik SELECT INTO om een tabel te maken

SELECT ... INTO maakt ook een bestemmingstabel op basis van queryresultaten:

SELECT * 
INTO dbo.TaxiTrips_2023
FROM MyLakehouse.dbo.TaxiTrips 
WHERE DATEPART(YEAR, tpep_pickup_datetime) = '2023';

Zowel CTAS als SELECT ... INTO leiden de bestemmingskolommen af uit het queryresultaat. Expressies expliciet casten wanneer het doel een specifiek datatype, precisie of lengte vereist.

Gebruik INSERT ... SELECT om gegevens toe te voegen

INSERT ... SELECT laadt queryresultaten in een bestaande tabel. Je kunt data aan een tabel toevoegen door data te transformeren uit een extern, publiek beschikbaar Parquet-bestand:

INSERT INTO dbo.<table name>
SELECT *
FROM OPENROWSET(BULK 'https://<storage account>.blob.core.windows.net/public/<subfolder>/<file name>.parquet') AS data;

Gebruik MERGE om data te synchroniseren

MERGE brengt bron- en bestemmingsrijen in overeenstemming op basis van een stabiele sleutel. Het volgende patroon gaat ervan uit dat dbo.DimCustomer al bestaat met de kolommen die door de instructie worden gebruikt. Zorg ervoor dat de bron niet meer dan één rij teruggeeft voor elke bestemmingssleutel.

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);

WHEN NOT MATCHED BY SOURCE THEN DELETE Gebruik alleen wanneer de bronquery de volledige gezaghebbende dataset vertegenwoordigt voor de rijen in scope. Gebruik die clausule niet met een incrementele bronbatch, want bestemmingsrijen die ontbreken in de batch kunnen worden verwijderd.

Kies een gegevensbron

De ingestie-statements werken consistent over alle ondersteunde brontypen. Alleen de bronreferentie verandert.

Bestanden in een lake

Gebruik OPENROWSET om Parquet-, CSV- of JSONL-bestanden te lezen in OneLake, Azure Data Lake Storage, of Azure Blob Storage. Je kunt één bestand targeten, meerdere bestanden met wildcards, of gepartitioneerde mappen.

Voor bestandspaden, schema-inferentie, partitiefiltering, metadatafuncties en voorbeelden voor alle vier ingestie-instructies/-statements, zie Ingest and transform lake data with OPENROWSET en T-SQL.

Delta-tabellen in een lakehouse

Het SQL-analyse-eindpunt van een lakehouse stelt Delta-tabellen in zijn /Tables opslaggedeelte beschikbaar. Vanuit een magazijn in dezelfde werkruimte, verwijs je naar een tabel door de driedelige naam <lakehouse>.<schema>.<table>te gebruiken. Dit beperkt zich niet tot Delta-tabellen die fysiek in het lakehouse worden opgeslagen. Tabellen die via OneLake-snelkoppelingen in het /Tables gebied worden blootgesteld, kunnen ook verwijzen naar gegevens die elders zijn opgeslagen, waaronder het lakehouse-gebied /Files , externe opslag zoals ADLS of Amazon S3, gespiegelde data en OneLake-data in andere werkruimtes. Met deze architectuur kun je door shortcuts ondersteunde data via het SQL-analyse-endpoint van Lakehouse opvragen zonder de data naar het lakehouse te kopiëren.

Voor tabelcreatie, incrementeel laden en synchronisatievoorbeelden, zie Ingest Delta Lake-tabellen met T-SQL.

Tabellen in het huidige magazijn

Gebruik een tweedelige naam zoals <schema>.<table> om gegevens op te nemen uit een tabel in het huidige warehouse.

Voor voorbeelden van Brons-naar-Zilver-naar-Goud waarbij tabellen worden samengevoegd, geaggregeerd en incrementeel geladen binnen één warehouse, zie Opnemen uit warehousetabellen en gespiegelde databases met T-SQL.

Gespiegelde databases en andere werkruimteitems

Om gegevens te importeren uit een gespiegelde database, een ander warehouse of een ander ondersteund item in dezelfde werkruimte, voeg je het item toe aan Verkenner en gebruik je de driedelige naam <item>.<schema>.<table>. Voor meer informatie over query's over magazijnen heen, zie Een database-overschrijdende SQL-query schrijven. Voor voorbeelden die beide naampatronen gebruiken, zie Gegevens opnemen uit warehousetabellen en gespiegelde databases met T-SQL.

T-SQL-opname controleren en bewaken

CTAS, SELECT ... INTO, INSERT ... SELECT en MERGE-bewerkingen verschijnen in de querygeschiedenis/activiteit van het magazijn. Gebruik query-inzichten om uitvoeringsdetails te bekijken en problemen met ingestiequery's op te sporen.

Opties voor gegevensopname

Gebruik T-SQL-opname wanneer de gegevenslading filtering, typeconversie, joins, berekeningen, aggregatie of synchronisatie omvat. Kies een andere optie wanneer: Andere manieren om data in je datawarehouse te importeren zijn: