查询未返回行时如何终止Azure Synapse中的管道

wn9m85ua  于 2022-11-17  发布在  其他
关注(0)|答案(1)|浏览(113)

我有一个由主管道D调用的管道A。它调用另外两个管道B和C。调用管道A时,执行提取查询,该查询可能返回行,也可能不返回任何内容。
如果它没有返回任何行,我希望它在不发送错误消息的情况下终止。它还应该终止主管道D。换句话说,管道B和C不应该被调用。我如何在Azure Synapse中调用这样的终端活动?我希望避免使用失败活动,因为它将是一个假阴性。

6g8kf2rb

6g8kf2rb1#

由于子管道具有查找输出计数,并且可以直接将计数传递给主管道,因此可以考虑更改管道配置。

  • 您可以直接使用复制数据活动并将记录计数写入新表,而不使用查找来获取计数。
  • 您可以在主管道中使用查找获取此数据(新表数据),并执行检查(计数是否为0)。
  • 请看下面的演示。我的Azure SQL数据库中有一个没有记录的表。在管道A中,我使用以下查询作为复制数据活动的源,并在接收器中自动创建了一个表。
-- in source. Querying the required table for count
select count(*) as count from demo

  • 现在在主管道中,使用附加查找从上面创建的count_val表中读取记录。输出如下:

  • 现在,您可以使用以下动态内容在if条件中使用此计数:
@equals(activity('Lookup1').output.value[0].count,0)
  • 当计数为0时,条件为真(如下所示),因此流停止(在真情况下没有活动)。如果存在记录,则将执行下一个管道(假情况)。

相关问题