Caricare i dati nel data warehouse

Si applica a:✅ Warehouse in Microsoft Fabric

Il warehouse in Microsoft Fabric offre strumenti di inserimento dati predefiniti. Usare questi strumenti per inserire i dati nei data warehouse su larga scala usando esperienze ricche di codice o senza codice.

Scegliere uno strumento di inserimento dati

Scegliere un'opzione di inserimento dati in base ai criteri seguenti:

  • Usare l'istruzione COPY (Transact-SQL) per le operazioni di inserimento dati avanzate nel codice. Offre la velocità effettiva di inserimento dati più elevata. Usarlo quando è necessario aggiungere l'inserimento dati come parte della logica di Transact-SQL.
    • Per iniziare, vedere Inserire dati usando l'istruzione COPY.
    • Il Warehouse supporta anche l'istruzione tradizionale BULK INSERT per motivi di compatibilità. In Fabric Data Warehouse, questa istruzione corrisponde al comportamento COPY INTO con le opzioni di caricamento classiche.
    • L'istruzione COPY in Warehouse supporta origini dati dagli account di archiviazione di Azure e dalle cartelle lakehouse di OneLake.
    • Specifica Workspace Identity nella clausola CREDENTIAL per rappresentare l'identità dell'area di lavoro Fabric durante l'accesso all'origine. Ad esempio: CREDENTIAL = (IDENTITY = 'Workspace Identity'). La dichiarazione continua a essere eseguita nel contesto di sicurezza SQL dell'utente corrente.
  • Usa BCP API (Anteprima) per l'acquisizione diretta lato client quando i dati si trovano nel livello dell'applicazione e non è possibile predisporre prima i file di staging.
    • Per iniziare, vedere Inserire dati con l'API BCP (anteprima).
    • L'API BCP supporta script bcp.exe e API dell'applicazione, ad esempio C# SqlBulkCopy e Java SQLServerBulkCopy.
    • Per l'acquisizione basata su file con la massima velocità effettiva, preferire COPY INTO quando è possibile effettuare lo staging.
  • Usare pipeline per flussi di lavoro di inserimento dati affidabili o privi di codice che vengono eseguiti ripetutamente, in base a una pianificazione o che coinvolgono grandi volumi di dati.
    • Per iniziare, vedere Inserire i dati nel warehouse usando le pipeline.
    • Usando le pipeline, è possibile orchestrare flussi di lavoro affidabili per un'esperienza ETL (Extract, Transform, Load) completa. Questa esperienza include attività che consentono di preparare l'ambiente di destinazione, eseguire istruzioni personalizzate Transact-SQL, eseguire ricerche o copiare dati da un'origine a una destinazione.
  • Usare i flussi di dati per un'esperienza senza codice che consente trasformazioni personalizzate dei dati di origine prima dell'inserimento.
    • Per iniziare, vedere Inserire dati usando un flusso di dati.
    • Queste trasformazioni includono, ma non solo limitate a, la modifica dei tipi di dati, l'aggiunta o la rimozione di colonne, o l'uso di funzioni per produrre colonne calcolate.
  • Usare l'inserimento T-SQL per esperienze avanzate di codice per creare nuove tabelle o aggiornare quelle esistenti con i dati di origine all'interno della stessa area di lavoro o archiviazione esterna.
    • Per iniziare, vedere Inserire dati in Warehouse usando Transact-SQL.
    • Usare le funzionalità Transact-SQL come INSERT...SELECT, SELECT INTO o CREATE TABLE AS SELECT (CTAS) per leggere i dati dalle tabelle che fanno riferimento ad altri magazzini, laghi di dati o database con mirroring all'interno dello stesso spazio di lavoro. È anche possibile usare queste funzionalità per leggere i dati dalla funzione OPENROWSET che fa riferimento ai file in account di archiviazione esterni Azure.
    • È anche possibile scrivere query tra database tra diversi warehouse nell'area di lavoro Fabric.

Formati e origini di dati supportati

L'inserimento dati per warehouse in Microsoft Fabric supporta molti formati di dati e origini. Ogni opzione descritta in questo articolo include un proprio elenco di tipi di connettori dati e formati di dati supportati.

Per l'inserimento T-SQL, le tabelle di origine dati devono essere nella stessa area di lavoro Microsoft Fabric, e i file di origine dati devono essere nell'Archiviazione Azure Data Lake o Azure Blob. È possibile eseguire query sui dati usando la denominazione in tre parti o la OPENROWSET funzione per i dati di origine. Le origini dati della tabella possono fare riferimento a set di dati Delta Lake, mentre OPENROWSET può fare riferimento a file Parquet, CSV o JSONL in Azure Data Lake o l'archiviazione Blob di Azure.

Si supponga, ad esempio, che un'area di lavoro abbia due warehouse, denominate Inventory e Sales. Una query come quella seguente crea una nuova tabella nel Inventory magazzino con il contenuto di una tabella nel Inventory magazzino unita a una tabella nel Sales magazzino e con file esterni contenenti informazioni sui clienti:

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

La lettura dei dati tramite OPENROWSET può essere più lenta rispetto all'esecuzione di query sui dati da una tabella. Se si prevede di accedere ripetutamente agli stessi dati esterni, è consigliabile inserirli in una tabella dedicata per migliorare le prestazioni e l'efficienza delle query.

L'istruzione COPY (Transact-SQL) supporta i formati file CSV, JSONL e PARQUET. Le fonti dati supportate includono Azure Data Lake Storage (ADLS) Gen2, Archiviazione BLOB di Azure e OneLake.

Per gli scenari di acquisizione diretta lato client, l'API BCP (anteprima) supporta strumenti e API come bcp.exe, C# SqlBulkCopy e Java SQLServerBulkCopy tramite connessioni SQL senza prima passare dai file di staging.

Le pipeline e i flussi di dati supportano un'ampia gamma di origini dati e formati di dati. Per altre informazioni, vedere Pipeline e flussi di dati.

Usa l'identità del workspace con COPY INTO

Utilizza Workspace Identity con COPY INTO per separare l'accesso ai dati di origine dall'autorizzazione di scrittura nella tabella del data warehouse di destinazione. Workspace Identity è supportato per Archiviazione BLOB di Azure, ADLS Gen2 e sorgenti OneLake. La dichiarazione viene eseguita nel contesto di sicurezza SQL dell'utente attuale. La WITH (CREDENTIAL = (IDENTITY = 'Workspace Identity')) clausola consente COPY INTO di impersonare l'identità dello spazio di lavoro solo quando accede alla sorgente. Tutti i permessi SQL e l'attribuzione di audit rimangono associati all'utente che effettua l'esecuzione.

Senza Workspace Identity, un utente che riceve l'accesso al warehouse tramite la condivisione di elementi può eseguire COPY INTO con almeno l'autorizzazione di lettura dell'elemento e le autorizzazioni SQL richieste.

Completa la seguente configurazione prima di eseguire COPY INTO con Workspace Identity:

  1. Configura un'identità di spazio di lavoro per lo spazio che contiene il warehouse di destinazione.
  2. Concedere all'identità dello spazio di lavoro l'accesso alla sorgente:
    • Per Archiviazione BLOB di Azure e ADLS Gen2, trova l'identità dello spazio di lavoro con il nome dello spazio di lavoro e assegna il ruolo Storage Blob Data Reader sull'account o contenitore di storage. Per l'accesso ADLS Gen2 a livello di directory, concedere i permessi ACL richiesti. Assegna i permessi all'identità dello spazio di lavoro come faresti a un utente Microsoft Entra.
    • Per OneLake, individua l'identità dell'area di lavoro in base al nome dell'area di lavoro, aggiungila all'area di lavoro che contiene i dati di origine e assegnale almeno il ruolo dell'area di lavoro Collaboratore.
  3. Assegna all'utente che esegue l'operazione almeno il ruolo di Viewer nello spazio di lavoro che contiene il warehouse di destinazione. I permessi degli elementi da soli non autorizzano un utente a impersonare l'identità dello spazio di lavoro. Il requisito del ruolo dello spazio di lavoro si applica solo quando l'utente specifica l'Identità dello Spazio di Lavoro.
  4. Concedi l'autorizzazione all'utente che esegue l'operazione sulla tabella di destinazione. Quando Workspace Identity è la credenziale, ADMINISTER DATABASE BULK OPERATIONS non è richiesta la autorizzazione.

Il seguente esempio carica un file CSV da OneLake impersonando Workspace Identity per l'accesso al sorgente:

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

Importante

Le politiche delle etichette di riservatezza variano in base all'organizzazione. COPY INTO può fallire quando la destinazione ha un'etichetta di sensibilità con restrizioni che impediscono l'operazione. Se un'etichetta di sensibilità causa il guasto, rimuovi l'etichetta dalla destinazione prima di riprovare il comando.

Procedure consigliate

Il COPY comando in Warehouse in Microsoft Fabric fornisce un'interfaccia semplice, flessibile e veloce per l'ingestione di dati ad alta velocità per carichi di lavoro SQL da Archiviazione di Azure e OneLake.

È anche possibile usare il linguaggio T-SQL per creare una nuova tabella e quindi inserirla, quindi aggiornare ed eliminare righe di dati. È possibile inserire dati da qualsiasi database all'interno dell'area di lavoro Microsoft Fabric usando query tra database. Se si desidera inserire dati da un lakehouse a un warehouse, è possibile eseguire questa operazione con una query tra database. Per esempio:

INSERT INTO MyWarehouseTable
SELECT * FROM MyLakehouse.dbo.MyLakehouseTable;
  • Evitare l'ingestione di dati usando istruzioni singleton INSERT , perché questo approccio causa prestazioni ridotte nelle query e negli aggiornamenti. Se si usano istruzioni singleton INSERT per l'inserimento di dati consecutivamente, creare una nuova tabella usando CREATE TABLE AS SELECT (CTAS) o INSERT...SELECT pattern, eliminare la tabella originale e quindi creare di nuovo la tabella dalla tabella creata usando CREATE TABLE AS SELECT (CTAS).
    • L'eliminazione della tabella esistente influisce sul modello semantico, incluse eventuali misure personalizzate o personalizzazioni apportate al modello semantico.
  • Quando si utilizzano dati esterni su file, assicurarsi che i file siano di almeno 4 MB.
  • Per file CSV compressi di grandi dimensioni, è consigliabile suddividere il file in più file.
  • Azure Data Lake Storage (ADLS) Gen2 offre prestazioni migliori rispetto ad Archiviazione BLOB di Azure (legacy). Prendere in considerazione l'uso di un account ADLS Gen2 quando possibile.
  • Per le pipeline eseguite di frequente, è consigliabile isolare l'account di archiviazione di Azure da altri servizi che possono accedere contemporaneamente agli stessi file.
  • Le transazioni esplicite consentono di raggruppare più modifiche ai dati in modo che siano visibili solo quando si legge una o più tabelle quando viene eseguito il commit completo della transazione. È anche possibile eseguire il rollback della transazione se una delle modifiche ha esito negativo.
  • Se un SELECT oggetto si trova all'interno di una transazione ed è stato preceduto dagli inserimenti di dati, le statistiche generate automaticamente possono essere imprecise dopo un rollback. Le statistiche imprecise possono causare piani di query e tempi di esecuzione non ottimizzati. Se si esegue il rollback di una transazione con SELECT dopo un INSERT di grandi dimensioni, aggiornare le statistiche per le colonne menzionate nel SELECT.

Note

Indipendentemente dalla modalità di inserimento dei dati nei data warehouse, l'attività di inserimento dati ottimizza i file parquet prodotti tramite l'ottimizzazione della scrittura dell'ordine V. V-Order ottimizza i file parquet per abilitare letture rapidissime con i motori di calcolo di Microsoft Fabric, come Power BI, SQL, Spark e altri. Generalmente le query del warehouse traggono vantaggio da tempi di lettura più veloci con questa ottimizzazione, garantendo comunque che i file parquet siano al 100% conformi alla specifica open source. Non disabilitare il V-Order perché potrebbe influire sulle prestazioni di lettura. Per altre informazioni sull'ordine V, vedere Comprendere e gestire V-Order for Warehouse.

Domande frequenti sull'inserimento dati per Fabric Data Warehouse

Quali sono le linee guida per la suddivisione dei file nel comando COPY che carica file CSV compressi?

Valutare la possibilità di suddividere file CSV di grandi dimensioni, soprattutto quando il numero di file è ridotto, ma mantenere i file almeno 4 MB ciascuno per ottenere prestazioni migliori.

Quali sono le indicazioni per suddividere i file per il comando COPY che carica i file Parquet?

Valutare la possibilità di suddividere file Parquet di grandi dimensioni, soprattutto quando il numero di file è ridotto.

Sono previste limitazioni per il numero o le dimensioni dei file?

Non esistono limitazioni per il numero o le dimensioni dei file. Tuttavia, per ottenere prestazioni ottimali, usare file di almeno 4 MB.

Quale credenziale usa il comando COPY se non ne specifico una?

Di default, COPY INTO utilizza l'identità Microsoft Entra dell'utente che effettua l'esecuzione per l'accesso al sorgente.