Я делаю простой тест на 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);
Спасибо, Сунита