我有一个查找活动,它从动态查询返回第一行,该查询通过参数传递到 ADF 管道。
大多数使用的查询都是这样的:
SELECT max(id) as watermark FROM events
如果事件表没有行,则查找活动第一行值为空。我可以使用 @empty() 函数在 If 活动中检查这一点,例如:
@not(empty(activity('lkup_watermark').output.firstrow['watermark']))
但是,有时传递给查找的查询如下:
SELECT '' as watermark
这些适用于那些不需要加载带有水印的增量的表
问题是 @empty 函数将 null 值和 '' 值都视为 true
我也尝试过使用@if()函数,但仍然没有区别。
有人知道 ADF 中检查该值是否为 true null 而不是 '' 值的正确函数吗?
用于区分 null 和空 '' 字符串的 Azure 数据工厂表达式
要区分字符串和空值,您可以使用
equals()
函数,如下所示:
@equals(activity('Lookup1').output.firstRow['watermark'],null)
如果lookup的输出为空值,则执行true条件,如果lookup的输出不为null值,则执行false条件。
在下图中,如果活动执行错误条件,您可以看到空字符串: