Файлы с разными заголовками для копирования данных в таблицу Azure DWH

Я новичок в хранилище данных Azure и фабрике данных Azure V2.

У меня есть папка с 10 файлами в лазурном BLOB-объекте, у каждого файла разные заголовки, но во всех файлах будет 5 общих заголовков.

То, что я пробовал,

Создал 10 серверов, связанных с файлами, и с помощью задачи копирования данных переместил данные в определенные таблицы. Но мне потребовалось всего 5 столбцов из этих таблиц.

Вопрос

Есть ли способ получить таблицу с 5 столбцами и динамическое файловое соединение для загрузки данных из 5 файлов.

Пример: File1: 10 заголовков File2: 11 заголовков File3: 7 заголовков. . . . File10: 15 заголовков

В этих файлах будет 5 общих столбцов, и эти данные должны быть загружены в общую таблицу с 5 столбцами.




Ответы (3)


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

person wBob    schedule 31.05.2019


Я согласен с @wBob, что Polybase может справиться с этим за вас. Однако в качестве альтернативы вы можете использовать поток данных фабрики данных Azure для обработки всех файлов и выбора только 5 нужных столбцов, а затем вывести эти результаты в приемник больших двоичных объектов. Затем используйте большой двоичный объект для Polybase, что упростит ваши требования к Polybase, или используйте операцию копирования ADF, чтобы записать их в свой SQLDW. В этом пространстве есть много вариантов.

person Joel Cochran    schedule 05.06.2019