Carga de tablas de almacenamiento provisional
Uno de los patrones más comunes para cargar un almacenamiento de datos es transferir datos de los sistemas de origen a los archivos de un lago de datos, ingerir los datos de los archivos en tablas de almacenamiento provisional y, luego, usar instrucciones SQL para cargar los datos desde las tablas de almacenamiento provisional hasta las tablas de dimensiones y hechos. Normalmente, la carga de datos se realiza como un proceso por lotes periódico en el que se coordinan las inserciones y actualizaciones en el almacenamiento de datos a intervalos regulares (por ejemplo, diaria, semanal o mensualmente).
Creación de tablas de almacenamiento provisional
Muchos almacenamientos organizados tienen estructuras estándar para almacenar provisionalmente la base de datos e incluso pueden usar un esquema específico para almacenar provisionalmente los datos. En el ejemplo de código siguiente se crea una tabla de almacenamiento provisional para los datos del producto que, en última instancia, se cargarán en una tabla de dimensiones:
Nota
En este ejemplo se crea una tabla de almacenamiento provisional en el esquema dbo predeterminado. También puede crear esquemas independientes para tablas de almacenamiento provisional con un nombre descriptivo, como almacenamiento provisional para que los arquitectos y los usuarios comprendan el propósito del esquema.
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
Puede utilizar la instrucción COPY para cargar datos del lago de datos, como se muestra en el ejemplo siguiente:
Nota
Por lo general, este es el enfoque recomendado para cargar tablas de almacenamiento provisional debido a su alto rendimiento.
COPY INTO dbo.StageProduct
(ProductID, ProductName, ...)
FROM 'https://mydatalake.../data/products*.parquet'
WITH
(
FILE_TYPE = 'PARQUET',
MAXERRORS = 0,
IDENTITY_INSERT = 'OFF'
);
Sugerencia
Para obtener más información sobre la instrucción COPY, consulte COPY (Transact-SQL) en la documentación de Transact-SQL.
Uso de tablas externas
En algunos casos, si los datos que se van a cargar están almacenados en archivos con una estructura adecuada, puede ser más eficaz crear tablas externas que hagan referencia a la ubicación del archivo. De este modo, los datos se pueden leer directamente desde los archivos de origen en lugar de cargarse en el almacén relacional. En el ejemplo siguiente se muestra cómo crear una tabla externa que haga referencia a archivos del lago de datos asociado al área de trabajo de 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
Sugerencia
Para obtener más información sobre el uso de tablas externas, consulte Uso de tablas externas con Synapse SQL en la documentación de Azure Synapse Analytics.