如何在U-SQL EXTRACT语句中处理丢失的文件?

问题描述 投票:1回答:1

我有以下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管道失败:

Input stream(s) don't exist

如何在U-SQL EXTRACT声明中优雅地处理丢失的文件?

c# azure azure-data-factory azure-data-lake u-sql
1个回答
1
投票

我不确定我是否可以将其视为“优雅”,但至少它可以解决问题。

我可以使用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;
© www.soinside.com 2019 - 2024. All rights reserved.