If statement Azure数据湖-条件
我想使用if-else语句来决定在什么位置导出数据。 我的情况是:If statement Azure数据湖-条件,if-statement,aggregate,azure-data-lake,u-sql,If Statement,Aggregate,Azure Data Lake,U Sql,我想使用if-else语句来决定在什么位置导出数据。 我的情况是: 我从azure blob存储中提取了几个文件(可能没有文件!!) 我计算文件集中的记录数 如果记录数>20,则我将文件导出到特定的报告位置 若文件集中并没有记录,我必须将伪空文件输出到不同的位置,因为我不想用空报告替换现有报告 解决方案可能是IF..ELSE确认。问题是,如果我计算记录数,我得到的是行集变量,而我无法将其与标量变量进行比较 @RECORDS = SELECT COUNT(id) AS IdsCount FROM
@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;
@记录=
选择计数(id)作为IdsCount
来自@final;
IF@RECORDSU-SQL的IF语句当前仅在编译期间使用。所以你可以做一些像
IF FILE.EXIST() THEN
但是,如果要根据记录数输出不同的文件,则必须在SDK/CLI级别写入:
第一个作业写入一个临时文件输出(可能还有一个包含行数的状态文件)。然后检查(例如在Powershell中)文件是否为空(或您希望使用的任何条件),如果不是空,则复制结果,否则创建空输出文件。您尝试的是将行集变量用作标量变量。这在usql中目前还不可能实现。请参阅和问题。