如何检查数据湖中是否有记录 table

How to check if there is records in a Data Lake table

在SQL中,我们可以执行 IF Exists(select * from table) 或 IF (select count(*) from table) = 3、Data Lake/U-SQL?

中是否有等价函数

谢谢。

U-SQL 只是一种声明式查询语言,目前不允许您使用 IF 语句更改基于值的控制流(此时的 IF 语句在编译时执行)。

您想在不同的 IF 分支中做什么?

现在,根据您想在 IF 子句中执行的操作,您有不同的选择:

  1. 将您的 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;
    

    如果您的条件取决于不同的 table,您可能需要进行(交叉)连接以使条件相关。

  2. 将您的脚本拆分为更小的脚本并使用 ADF 或 Powershell 控制流程。这可能意味着你创建了你下载的中间结果,所以我通常更喜欢 1.

  3. 最后但同样重要的是:通常可能有一种声明性的方式来表达您的逻辑,首先可以避免条件。