Когда вы создаете внешние таблицы в хранилище данных SQL Azure с помощью Polybase, они могут указывать либо на отдельный файл, либо на набор файлов, если они находятся в одной папке и в одном и том же формате.
Отдельный файл
WTIH (
DATA_SOURCE = yourDataSource,
LOCATION = N'/input/file1.txt',
FILE_FORMAT = yourFileFormat,
...
etc
Папка
WTIH (
DATA_SOURCE = yourDataSource,
LOCATION = N'/input/',
FILE_FORMAT = yourFileFormat,
...
etc
Итак, вы можете создать внешнюю таблицу для каждого файла. Внешние таблицы представляют собой только структуры метаданных, в действительности данные не существуют в базе данных.
Эти таблицы должны включать все столбцы для каждой таблицы. Затем создайте оператор UNION
для пяти таблиц, выбрав только пять столбцов и используйте CTAS
для импорта данных в базу данных:
CREATE TABLE dbo.yourTable
WITH
(
DISTRIBUTION = ROUND_ROBIN,
CLUSTERED COLUMNSTORE INDEX
)
AS
SELECT col1, col2, col3, col4, col5
FROM externalTable1
UNION ALL
SELECT col1, col2, col3, col4, col5
FROM externalTable2
UNION ALL
SELECT col1, col2, col3, col4, col5
FROM externalTable3
etc
....
Вероятно, я бы не использовал фабрику данных, поскольку Polybase может сделать большую часть работы за вас.