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