2016-08-17 9 views
2

Наш usecase требует, чтобы настраиваемый вход передавался в U-SQL-скрипт через Azure Data Factory. Мы оцениваем выполнимость и должны автоматизировать количество переменных, переданных в сценарий U-SQL, в зависимости от интервала времени для активности.Настроить динамическое число параметров в трубопроводе Azure Data Factory на основе интервалов?

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

Путь к файлу будет в формате: Source \ YYYY-MM-DD \ hh.csv

Является ли это динамичность достижима с современными устройствами и набором функций, которые предоставляют данные завод или озера данных? Или существует обходное решение для этого, поэтому автоматическое развертывание трубопровода данных может быть автоматизировано?

ответ

1

Если файлы имеют ту же схему, вы можете использовать набор файлов возможности в U-SQL следующим образом:

DECLARE @begin_date DateTime = DateTime.Parse("...."); 
DECLARE @end_date DateTime = DateTime.Parse("...."); 

@data = 
    EXTRACT filedate DateTime, // insert rest of your schema 
    FROM "/Source/{filedate:yyyy}-{filedate:MM}-{filedate:dd}/{filedate:hh}.csv" 
    USING Extractors.Csv(); 

@data = 
    SELECT * 
    FROM @data 
    WHERE filedate BETWEEN @begin_date AND @end_date; 

// ... rest of script ... 

Приведенный выше код будет иметь доступ только те файлы, которые удовлетворяют предикату на filedate и не прочитайте другие файлы.

Затем вы используете возможность параметризации АПД для параметризации @begin_date и @end_date, чтобы дать вам необходимый вам интервал.

+0

Означает ли это, что для получения всех данных из источника и фильтра требуется необходимый интервал? – Jamil

+0

Это означает извлечение всех данных с указанного интервала. Предикат фактически будет использоваться для доступа только к файлам, которые удовлетворяют предикату ... добавлено выше, чтобы было ясно. –

+0

Я использовал выше код и задал следующий интервал: WHERE filedate BETWEEN Convert.ToDateTime ("2016-08-17T06") AND Convert.ToDateTime ("2016-08-17T10"); «2016-08-17» папка содержит 18 файлов и выше код, который должен читать файлы между 06 и 10. Но когда я запускаю свое задание, он пытается извлечь все файлы, присутствующие в исходной папке. – Jamil

 Смежные вопросы

  • Нет связанных вопросов^_^