我有以下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
声明中优雅地处理丢失的文件?
我不确定我是否可以将其视为“优雅”,但至少它可以解决问题。
我可以使用FILE.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;