1
if-else 문을 사용하여 데이터를 내보낼 위치를 결정하고 싶습니다. 내 경우는 다음과 같습니다 나는 푸른 BLOB 저장소에서 여러 파일 (이 파일이 없으면 가능합니다!)의 압축을Azure 데이터 레이크 - 조건
- .
- 파일 세트의 레코드 수를 계산합니다.
- 레코드 수가 20 개 이상인 경우 특정 보고서 위치로 파일을 내 보냅니다.
- 파일 세트에 레코드가없는 경우 기존 보고서를 바꿀 필요가 없기 때문에 더미 파일을 다른 위치에 출력해야합니다. 빈 보고서.
해결책은 IF..ELSE입니다. 문제는 레코드 수를 계산할 때 행 집합 변수가 있고 스칼라 변수와 비교할 수 없다는 것입니다.
@RECORDS =
SELECT COUNT(id) AS IdsCount
FROM @final;
IF @RECORDS <= 20 THEN //generate dummy empty file
OUTPUT @final_result
TO @EMPTY_OUTPUT_FILE
USING Outputters.Text(delimiter : '\t', quoting : true, encoding : Encoding.UTF8, outputHeader : true, dateTimeFormat : "s", nullEscape : "NULL");
ELSE
OUTPUT @final_result
TO @OUTPUT_FILE
USING Outputters.Text(delimiter : '\t', quoting : true, encoding : Encoding.UTF8, outputHeader : true, dateTimeFormat : "s", nullEscape : "NULL");
END;
행 집합 변수를 스칼라 변수로 사용하는 것입니다. 지금은 usql에서는 불가능합니다. [this] (https://stackoverflow.com/q/40094944/2417043) 및 [this] (https://stackoverflow.com/q/41394628/2417043) 질문을 참조하십시오. – arghtype