Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:✅ Warehouse in Microsoft Fabric
Il linguaggio Transact-SQL offre opzioni che è possibile usare per caricare i dati su larga scala da tabelle esistenti nel lakehouse e nel warehouse in nuove tabelle del warehouse. Queste opzioni sono utili se è necessario creare nuove versioni di una tabella con dati aggregati, versioni di tabelle con un subset di righe o creare una tabella in seguito a una query complessa. Ora si esamineranno alcuni esempi.
Scegli un'istruzione di ingestione T-SQL
Il linguaggio T-SQL fornisce un ricco set di istruzioni che puoi utilizzare per acquisire e trasformare i dati nel tuo warehouse. Puoi caricare dati in tabelle nuove o esistenti, aggiungere nuove righe, trasformare i dati durante l'ingestione o sincronizzare le modifiche con le tabelle esistenti. Warehouse in Microsoft Fabric supporta le seguenti istruzioni di ingestione T-SQL:
-
CREATE TABLE AS SELECTIstruzione CTAS che consente di creare una nuova tabella nel data warehouse dall'output di un'istruzioneSELECT. -
SELECT INTOclausola di query che consente di selezionare i risultati da qualsiasi origine tabella e reindirizzare i risultati in una nuova tabella. Si tratta di una funzionalità standard nel linguaggio T-SQL. -
INSERT ... SELECTAggiunge i risultati della query alla tabella di destinazione. Usa questa istruzione quando vuoi caricare un nuovo batch o un sottoinsieme incrementale in una tabella il cui schema controlli. -
MERGEconfronta le righe di origine e destinazione e inserisce condizionatamente, aggiorna o elimina le righe di destinazione. Usa questa istruzione quando devi sincronizzare nuove righe e righe modificate, o riconciliare una destinazione con uno snapshot sorgente completo.
Scegli un'istruzione in base al fatto che la tabella di destinazione esista già e se vuoi creare, aggiungere o sincronizzare dati. La fonte di ogni istruzione è una query T-SQL. Puoi utilizzare espressioni, funzioni, filtri, join e aggregazioni supportati per modellare i dati durante l'ingestione. Puoi utilizzare le seguenti fonti di dati per leggere i dati nelle tue istruzioni T-SQL:
- Lettura di una tabella di magazzino, ad esempio una tabella di transizione.
- Lettura di una cartella Lakehouse Delta Lake usando una tabella generata automaticamente nell'endpoint di analisi SQL per Lakehouse.
- Lettura di file CSV, Parquet o JSONL direttamente da Azure Data Lake o Azure Blob Storage usando la funzione
OPENROWSET.
Usa CTAS per creare una tabella
CTAS crea la tabella di destinazione e carica i risultati della query in un'unica operazione.
Il primo esempio mostra come creare una nuova tabella che rappresenta una copia della tabella esistente dbo.TaxiTrips , ma filtrata in modo da includere solo i dati dell'anno 2023:
CREATE TABLE dbo.TaxiTrips_2023
AS
SELECT *
FROM dbo.TaxiTrips
WHERE DATEPART(YEAR, tpep_pickup_datetime) = '2023';
Usa CTAS per creare e popolare una nuova tabella dai risultati delle query. Questo metodo è utile quando la tabella di destinazione non esiste o quando si vuole materializzare dati trasformati o combinati da una o più fonti.
Usa SELECT INTO per creare una tabella
SELECT ... INTO Crea inoltre una tabella di destinazione dai risultati delle query:
SELECT *
INTO dbo.TaxiTrips_2023
FROM MyLakehouse.dbo.TaxiTrips
WHERE DATEPART(YEAR, tpep_pickup_datetime) = '2023';
Sia CTAS che SELECT ... INTO deducono le colonne di destinazione dal risultato della query. Convertire esplicitamente le espressioni quando la destinazione richiede un tipo di dati, una precisione o una lunghezza specifici.
Usa INSERT ... SELECT per aggiungere dati
INSERT ... SELECT carica i risultati delle query in una tabella esistente.
Puoi aggiungere dati a una tabella trasformando dati da un file Parquet esterno e pubblicamente disponibile:
INSERT INTO dbo.<table name>
SELECT *
FROM OPENROWSET(BULK 'https://<storage account>.blob.core.windows.net/public/<subfolder>/<file name>.parquet') AS data;
Usa MERGE per sincronizzare i dati
MERGE Abbina le righe di origine e destinazione tramite una chiave stabile. Il seguente schema assume che dbo.DimCustomer esista già con le colonne usate dall'istruzione. Assicurati che la sorgente restituisca non più di una riga per ogni chiave di destinazione.
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);
Usa WHEN NOT MATCHED BY SOURCE THEN DELETE solo quando la query sorgente rappresenta il dataset autorevole completo per le righe incluse nell'ambito. Non usare quella clausola con un batch sorgente incrementale, perché le righe di destinazione assenti dal batch potrebbero essere cancellate.
Scegli un'origine dati
Le istruzioni di inserimento funzionano in modo coerente tra i tipi di sorgente supportati. Solo il riferimento sorgente cambia.
File in un data lake
Usare OPENROWSET per leggere file Parquet, CSV o JSONL in OneLake, Azure Data Lake Storage o Archiviazione BLOB di Azure. Puoi indirizzare un file, più file con caratteri jolly o cartelle partizionate.
Per percorsi di file, inferenza di schema, filtraggio delle partizioni, funzioni di metadati ed esempi per tutte e quattro le istruzioni di ingestione, vedi Ingest e trasformazione dei dati del data lake con OPENROWSET e T-SQL.
Tabelle Delta in un lakehouse
L'endpoint di analisi SQL di un lakehouse espone le tabelle Delta nell'area /Tables del lakehouse. Da un warehouse nello stesso spazio di lavoro, si fa riferimento a una tabella usando il nome in tre parti <lakehouse>.<schema>.<table>.
Questo non si limita alle tabelle Delta fisicamente archiviate nel lakehouse. Le tabelle esposte tramite shortcut di OneLake nell'area /Tables possono anche fare riferimento a dati archiviati altrove, inclusa l'area lakehouse /Files, archiviazione esterna come ADLS o Amazon S3, dati speculari e dati OneLake in altri workspace.
Utilizzando questa architettura, puoi interrogare i dati supportati da scorciatoie tramite l'endpoint SQL analytics di Lakehouse senza copiare i dati nel lakehouse.
Per esempi di creazione di tabelle, carichi incrementali e sincronizzazione, vedi Ingest Delta Lake tables with T-SQL.
Tabelle nell'attuale magazzino
Usa un nome a due parti, ad esempio <schema>.<table> per ingerire dati da una tabella nel warehouse corrente.
Per esempi da Bronze a Silver a Gold che uniscono, aggregano e caricano incrementalmente tabelle all'interno di un unico warehouse, vedi Acquisire dati da tabelle del warehouse e database con mirroring con T-SQL.
Database con mirroring e altri elementi dello spazio di lavoro
Per acquisire dati da un database speculare, da un altro warehouse o da un altro elemento supportato nello stesso workspace, aggiungi l'elemento a Esplora e usa il nome <item>.<schema>.<table>in tre parti .
Per altre informazioni sulle query tra data warehouse, vedere Scrivere una query SQL tra database.
Per esempi che utilizzano entrambi i modelli di denominazione, vedi Ingest da tabelle warehouse e database speculari con T-SQL.
Controllare e monitorare l'inserimento T-SQL
CTAS, MERGE, e INSERT ... SELECT operazioni appaiono nella SELECT ... INTO. Usa query insights per esaminare i dettagli dell'esecuzione e risolvere i problemi delle query di ingestione.
Opzioni di inserimento dati
Usa l'ingestione T-SQL quando il carico include filtraggio, conversione di tipi, join, calcoli, aggregazione o sincronizzazione. Scegli un'altra opzione quando: Altri modi per integrare dati nel tuo data warehouse includono:
- Inserire dati usando l'istruzione COPY
- Inserire dati usando le pipeline
- Inserire dati usando un flusso di dati