Как обработать отсутствующий файл в инструкции извлечения U-SQL?

#c# #azure #azure-data-factory #azure-data-lake #u-sql

#c# #azure #azure-data-factory #azure-data-lake #u-sql

Вопрос:

У меня есть следующий EXTRACT оператор, который собирает данные как из промежуточного файла, так и из производственного файла:

 DECLARE @staging  string = "/staging/events.csv";
DECLARE @production string = "/production/events.csv";

@events =
        EXTRACT dimensionId         string
              , tenantId            string 
              , internalEntityId    long
              , name                string
              , modifiedTimestamp   DateTime
        FROM @staging, @production
        USING Extractors.Csv();
  

Инструкция завершится ошибкой, если отсутствует один из двух файлов, что приводит к сбою всего Azure Data Factory конвейера:

Входные потоки не существуют

Вопрос

Как я могу корректно обработать отсутствующий файл в U-SQL EXTRACT инструкции?

Ответ №1:

Я не уверен, что могу квалифицировать это как «Изящно», но, по крайней мере, это делает свое дело.

Я могу использовать ФАЙЛ.Оператор EXISTS для предварительной проверки наличия файла и выбора включать его или нет:

 DECLARE @staging  string = "/staging/events.csv";
DECLARE @production string = "/production/events.csv";

IF FILE.EXISTS(@production) == true THEN
 @events =
     EXTRACT    dimensionId         string
              , tenantId            string 
              , internalEntityId    long
              , name                string
              , modifiedTimestamp   DateTime
        FROM @staging, @production
        USING Extractors.Csv();
ELSE
@events =
     EXTRACT    dimensionId         string
              , tenantId            string 
              , internalEntityId    long
              , name                string
              , modifiedTimestamp   DateTime
        FROM @staging
        USING Extractors.Csv();
END;