Загрузка промежуточных таблиц

Завершено

Одним из наиболее распространенных шаблонов для загрузки хранилища данных является передача данных из источника в файлы озера данных с последующим приемом данных из файлов в промежуточные таблицы и загрузкой данных из промежуточных таблиц в таблицы измерений и фактов с помощью инструкций SQL. Обычно такая загрузка данных выполняется в пакетном режиме с некоторой периодичностью, что обеспечивает выполнение операций вставки и обновления в хранилище данных с регулярным интервалом (например, ежедневно, еженедельно или ежемесячно).

Создание промежуточных таблиц

Многие упорядоченные хранилища имеют стандартные структуры для промежуточной базы данных и могут даже использовать определенную схему для промежуточного хранения данных. В следующем примере кода создается промежуточная таблица для данных о продуктах, которые в конечном итоге будут загружены в таблицу измерений:

Примечание.

В этом примере создается промежуточная таблица в схеме dbo по умолчанию. Кроме того, можно создать отдельные схемы для промежуточных таблиц с осмысленным именем, например stage, чтобы архитекторы и пользователи понимали назначение схемы.

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

Использование команды COPY

Инструкцию COPY можно использовать для загрузки данных из озера данных, как показано в следующем примере:

Примечание.

Обычно это рекомендуемый подход к загрузке промежуточных таблиц из-за высокой пропускной способности.

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

Совет

Дополнительные сведения об инструкции COPY см. в разделе COPY (Transact-SQL) в документации по Transact-SQL.

Использование внешних таблиц

В некоторых случаях, если загруженные данные хранятся в файлах с соответствующей структурой, это может быть более эффективным для создания внешних таблиц, ссылающихся на расположение файла. Это позволит считывать данные непосредственно из исходных файлов без загрузки в реляционное хранилище. В следующем примере показано, как создать внешнюю таблицу, которая ссылается на файлы в озере данных, связанном с рабочей областью 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

Совет

Для получения дополнительной информации об использовании внешних таблиц см. раздел Использование внешних таблиц с Synapse SQL в документации Azure Synapse Analytics.