Caricare tabelle di staging
Uno dei modelli più comuni per il caricamento di un data warehouse consiste nel trasferimento dei dati dai sistemi di origine ai file in un data lake, nell'inserimento dei dati dei file nelle tabelle di staging e quindi nell'uso di istruzioni SQL per caricare i dati dalle tabelle di staging nelle tabelle delle dimensioni e dei fatti. Il caricamento dei dati viene in genere eseguito come processo batch periodico, in cui gli inserimenti e gli aggiornamenti nel data warehouse sono programmati a intervalli regolari, ad esempio su base giornaliera, settimanale o mensile.
Creazione di tabelle di staging
Molti data warehouse organizzati dispongono di strutture standard per lo staging del database e possono anche usare uno schema specifico per lo staging dei dati. L'esempio di codice seguente crea una tabella di staging per i dati dei prodotti che verranno infine caricati in una tabella delle dimensioni:
Nota
In questo esempio viene creata una tabella di staging nello schema dbo predefinito. È anche possibile creare schemi separati per le tabelle di staging con un nome significativo, ad esempio staging, in modo che gli architetti e gli utenti comprendano lo scopo dello schema.
CREATE TABLE dbo.StageProduct
(
ProductID NVARCHAR(10) NOT NULL,
ProductName NVARCHAR(200) NOT NULL,
ProductCategory NVARCHAR(200) NOT NULL,
Color NVARCHAR(10),
Size NVARCHAR(10),
ListPrice DECIMAL NOT NULL,
Discontinued BIT NOT NULL
)
WITH
(
DISTRIBUTION = ROUND_ROBIN,
CLUSTERED COLUMNSTORE INDEX
);
Uso del comando COPY
È possibile usare l'istruzione COPY per caricare dati dal data lake, come illustrato nell'esempio seguente:
Nota
Questo è generalmente l'approccio consigliato per caricare le tabelle di staging a causa della velocità effettiva con prestazioni elevate.
COPY INTO dbo.StageProduct
(ProductID, ProductName, ...)
FROM 'https://mydatalake.../data/products*.parquet'
WITH
(
FILE_TYPE = 'PARQUET',
MAXERRORS = 0,
IDENTITY_INSERT = 'OFF'
);
Suggerimento
Per altre informazioni sull'istruzione COPY, vedere COPY (Transact-SQL) nella documentazione di Transact-SQL.
Uso di tabelle esterne
In alcuni casi, se i dati da caricare si trovano in file con una struttura appropriata, può essere più efficace creare tabelle esterne che fanno riferimento alla posizione dei file. In questo modo, i dati possono essere letti direttamente dai file di origine anziché essere caricati nell'archivio relazionale. L'esempio seguente mostra come creare una tabella esterna che fa riferimento ai file nel data lake associato all'area di lavoro di Azure Synapse Analytics:
CREATE EXTERNAL TABLE dbo.ExternalStageProduct
(
ProductID NVARCHAR(10) NOT NULL,
ProductName NVARCHAR(10) NOT NULL,
...
)
WITH
(
DATE_SOURCE = StagedFiles,
LOCATION = 'folder_name/*.parquet',
FILE_FORMAT = ParquetFormat
);
GO
Suggerimento
Per altre informazioni sull'uso di tabelle esterne, vedere Usare tabelle esterne con Synapse SQL nella documentazione di Azure Synapse Analytics.