在SQL中我们可以做IF存在(从表中选择*)或IF(从表中选择count(*))= 3,Data Lake / U-SQL中是否有相同的函数?
感谢。
答案 0 :(得分:2)
U-SQL是一种声明性查询语言,目前不允许您根据带有IF语句的值更改控制流(此时IF语句在编译时执行)。
您希望在不同的IF分支中做什么?
现在,根据您在IF子句中的操作,您有不同的选择:
将您的IF条件移动到查询谓词中(例如,
@res =
SELECT a, b, c FROM @x WHERE condition
UNION ALL
SELECT a, b, c FROM @y WHERE !condition;
而不是
IF (condition) THEN
@res = SELECT a, b, c FROM @x;
ELSE
@res = SELECT a, b, c FROM @y;
END;
如果您的病情取决于不同的表,您可能需要进行(交叉)联接以使条件相关。
将脚本拆分为较小的脚本,并使用ADF或Powershell进行控制流程。这可能意味着您创建了下载的中间结果,因此我通常更喜欢1。
最后但并非最不重要:通常可能有一种声明性的方式表达你的逻辑,可以首先避免条件。