Функция File Exists в USQL - PullRequest
       9

Функция File Exists в USQL

0 голосов
/ 21 сентября 2018

Я делаю простой тест на USQL, чтобы проверить, существует ли файл, и затем на его основе выполняю операции слияния.Тем не менее, я не могу понять это правильно.Можете ли вы помочь мне с этим и дайте мне знать, где я иду не так.

DECLARE @InputFile1 string = "/MergeTest/FINAL/Check1.csv";
DECLARE @InputFile2 string = "/MergeTest/STAGING/Test-{*}.json";                                                                         
DECLARE @OutputFile1 string = "/MergeTest/FINAL/Check1.csv";

IF (FILE.EXISTS(@InputFile1))
THEN
@Final = EXTRACT [ID] int,
                 [Name] string,
                 [City] string,
                 [Country] string
FROM @InputFile1
USING Extractors.Csv(skipFirstNRows:1);
END;

@Delta = EXTRACT [ID] int,
                 [Name] string,
                 [City] string,
                 [Country] string
FROM @InputFile2
USING new JsonExtractor("$.DEP[*]");

Приведенный ниже код не работает в условии IF.Я получаю ошибку: @FileExists уже объявлен как скалярная переменная.Если это неправильный способ реализовать это, какой будет правильный подход?

@FileExists = SELECT (FILE.EXISTS(@InputFile1)) AS exists_good FROM (VALUES (1)) AS T(dummy);

IF ####@FileExists THEN
    @result =   SELECT * FROM @Delta
                UNION ALL
                SELECT * FROM Final AS T1
                ANTISEMIJOIN (SELECT * FROM @Delta) AS T2
                ON T1.[ID] == T2.[ID];
ELSE
    @result =   SELECT * FROM @Delta;
END;

OUTPUT @result   
TO @OutputFile1
USING Outputters.Csv(outputHeader:true);

Спасибо, Сунита

1 Ответ

0 голосов
/ 21 сентября 2018

Просто напишите это вместо:

IF FILE.EXISTS(@InputFile1) THEN ...

Когда вы назначаете это с помощью SELECT, это в основном набор строк и не может рассматриваться как скалярная переменная.

Я также отмечу вВаш пример, что @inputFile1 и @outputFile1 имеют одинаковые имена файлов.Я уверен, что это вызовет проблемы.Убедитесь, что они отличаются в вашем реальном примере.

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