Carregar tabelas de preparo

Concluído

Um dos padrões mais comuns para carregar um data warehouse é transferir dados de sistemas de origem para arquivos em um data lake, ingerir os dados de arquivos em tabelas de preparo e, em seguida, usar instruções SQL para carregar os dados das tabelas de preparo para as tabelas de dimensões e de fatos. Normalmente, o carregamento de dados é realizado como um processo em lote periódico no qual inserções e atualizações no data warehouse são coordenadas de maneira a ocorrerem em intervalos regulares (por exemplo, diário, semanal ou mensal).

Criando tabelas de preparo

Muitos armazéns organizados têm estruturas padrão para preparar o banco de dados e podem até usar um esquema específico para preparar os dados. O seguinte exemplo de código cria uma tabela de preparo para dados do produto que, em última análise, serão carregados em uma tabela de dimensões:

Observação

Este exemplo cria uma tabela de preparo no esquema dbo padrão. Crie também esquemas separados para tabelas de preparo com um nome significativo, como fase, de modo que arquitetos e usuários entendam a finalidade do 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
);

Como usar o comando COPY

Use a instrução COPY para carregar dados do data lake, conforme mostrado no seguinte exemplo:

Observação

Geralmente, essa é a abordagem recomendada para carregar tabelas de preparo devido à taxa de transferência de alto desempenho.

COPY INTO dbo.StageProduct
    (ProductID, ProductName, ...)
FROM 'https://mydatalake.../data/products*.parquet'
WITH
(
    FILE_TYPE = 'PARQUET',
    MAXERRORS = 0,
    IDENTITY_INSERT = 'OFF'
);

Dica

Para saber mais sobre a instrução COPY, confira COPY (Transact-SQL) na documentação do Transact-SQL.

Usando tabelas externas

Em alguns casos, se os dados a serem carregados estiverem armazenados em arquivos com uma estrutura apropriada, poderá ser mais eficaz criar tabelas externas que referenciem o local do arquivo. Dessa forma, os dados podem ser lidos diretamente dos arquivos de origem em vez de serem carregados no repositório relacional. O seguinte exemplo mostra como criar uma tabela externa que referencia arquivos no data lake associado ao workspace do 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

Dica

Para saber mais sobre como usar tabelas externas, consulte Usar tabelas externas com o SQL do Synapse na documentação do Azure Synapse Analytics.