Фабрика данных Azure (ADFv2) - как обрабатывать несколько входных файлов из разных папок в задании USQL - PullRequest
0 голосов
/ 31 октября 2018

У нас есть требование обрабатывать несколько файлов из разных папок, используя фабрику данных Azure и USQL.

Вот структура папок, которую мы имеем

Год -> Месяц -> День

У нас есть папка для каждой даты, скажем, 1,2,3 ... 31. Требуется прочитать файлы из определенных папок и передать их в USQL для обработки аналитики. Нам нужно обработать данные за несколько дат. Есть ли способ в фабрике данных, мы можем читать данные из нескольких папок.

Пример: мне нужно прочитать данные за даты, 1,7 и 10 за определенный месяц. Я не хочу читать все файлы за месяц

Пожалуйста, сообщите нам, если вы нашли решение для вышеупомянутого сценария.

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Ниже работает код. Как предложено выше.

ОБЪЯВИТЬ ВНЕШНЕЕ @startDate string = "2018-08-01"; // значение будет передано из ADF ОБЪЯВИТЬ ВНЕШНЕЕ @endDate string = "2018-08-31"; // значение будет передано из ADF

DECLARE @report_start_date DateTime = DateTime.ParseExact (@startDate, "yyyy-MM-dd", CultureInfo.InvariantCulture); DECLARE @report_end_date DateTime = DateTime.ParseExact (@endDate, "yyyy-MM-dd", CultureInfo.InvariantCulture);

DECLARE @ INPUT_FILE = @ valueFromADF + "/ {date: yyyy} / {date: M} / {date: d} / {filename} .txt";

@ dataAsString = строка значения EXTRACT, дата DateTime FROM @INPUT_FILE USING Extractors.Text (разделитель: '\ n'); @dataAsStrings = SELECT * FROM @dataAsString ГДЕ дата МЕЖДУ @report_start_date И @report_end_date;

0 голосов
/ 01 ноября 2018

да, есть. Вы должны использовать виртуальные столбцы. Пример: Ваш файл имеет только столбец1 и столбец2.

путь1 = / YourFolder / 2018/11 / 1 / FILE.CSV

путь2 = / YourFolder / 2018/10 / 25 / FILE.CSV

DECLARE date1 = new DateTime(2018,11,1);
DECLARE date2 = new DateTime(2018,10,25);
@inputData = EXTRACT column1 string,
column2 string, 
FileDate DateTime //this is virtual column
FROM "/yourFolder/{FileDate:yyyy}/{FileDate:MM}/{FileDate:dd}/file.csv"
USING Extractors.Text(delimiter:';',skipFirstNRows:1);
@res = SELECT * FROM @inputData WHERE FileDate == date1 AND FileDate ==date2;

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

P.S. Вы можете отправить параметры из ADF в хранимую процедуру USQL. Я только что привел пример работы с конкретными файлами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...