Все -
У меня есть некоторые проблемы с объединением таблиц ADLA и их загрузкой в Azure SQL DW.
Я застрял на одном из процессов загрузки и не знаю, как решить эту проблему. У меня есть некоторая информация о покупке, которая, когда я извлекаю из локальной системы в ADLS, создает выходной файл размером около 25 МБ каждый, и когда я пытаюсь присоединиться к ним с помощью «INNER JOIN» в задании ADLA, он продолжает работать в течение длительного времени. Во время работы я вижу, что выходной файл продолжает занимать более 5 ГБ. Я чувствую, что это слишком много для файла размером 25 МБ, и не уверен, что делаю что-то не так (снимок экрана прилагается для справки при запуске из VS).
Процесс, который я делаю: 1- загружаю данные из локальной базы данных в облачное хранилище ADLS с помощью ADF 2- запускаю задание ADLA для извлечения файла ADLS в таблицу ADLA и раздел, используя параметр ROUND ROBIN, чтобы избежать проблем с перекосом данных 3- задание ADLA создаст агрегированный файл в хранилище ADLS 4 — конвейер ADF для загрузки файла № 3 в Azure SQL DW
Любые указатели или помощь могут быть очень полезными.
Спасибо, Шабир
Вот код (я удалил все имена полей и информацию о клиенте). Надеюсь это поможет.
DECLARE @dir = "/{date:yyyy}/{date:MM}/{date:dd}/<FILE PATH>/";
DECLARE @in_1 string = <FILE #1>;
DECLARE @in_2 string = <FILE #2>;
DECLARE @out string = <OUTPUT FILE>;
@file1 =
EXTRACT
<25 COL. WITH ALL NULLABLE>
date DateTime
FROM @in_1
USING Extractors.Text(delimiter : '|');
@file2 =
EXTRACT
<40 COL. WITH ALL NULLABLE>
date DateTime
FROM @in_2
USING Extractors.Text(delimiter : '|');
@output =
SELECT
<25 + 40 COL. FROM INPUT FILES>
FROM @file1 AS f1
INNER JOIN @file2 AS f2
ON f1.join1 == f2.join2;
OUTPUT @purchase
TO @out
USING Outputters.Text(delimiter : '|');
Это запускается через конвейер ADF и использует внешние параметры для даты и путей к файлам.