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 do arquivo 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 fatos. Normalmente, o carregamento de dados é realizado como um processo em lote periódico no qual inserções e atualizações para o data warehouse são coordenadas para ocorrer em um intervalo regular (por exemplo, diariamente, semanalmente ou mensalmente).

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 exemplo de código a seguir cria uma tabela de preparo para dados do produto que serão carregados em uma tabela de dimensão:

Nota

Este exemplo cria uma tabela de preparo no esquema dbo padrão. Você também pode criar esquemas separados para tabelas de preparo com um nome significativo, como estágio , para 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
);

Usando o comando COPY

Você pode usar a instrução COPY para carregar dados do data lake, conforme mostrado no exemplo a seguir:

Nota

Esta é geralmente a abordagem recomendada para carregar tabelas de preparo devido à sua alta taxa de transferência de desempenho.

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

Gorjeta

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

Usando tabelas externas

Em alguns casos, se os dados a serem carregados forem armazenados em arquivos com uma estrutura apropriada, pode ser mais eficaz criar tabelas externas que façam referência ao 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 exemplo a seguir mostra como criar uma tabela externa que faz referência a arquivos no data lake associado ao espaço de trabalho 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

Gorjeta

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