使用Azure Data Factory Copy活动防止生成空文件

时间:2018-10-03 19:51:20

标签: azure azure-data-factory azure-data-lake azure-data-factory-2

我正在使用Azure数据工厂将数据从Azure Cosmos DB复制到Azure数据湖。我的管道包含一个复制活动,该复制活动将数据复制到Data Lake Sink。

这是我对源数据集的查询:

Optional<T> findById(ID id)

我要在触发时间之前的最后15分钟获取数据。

现在,如果查询没有检索到任何数据,则复制活动将生成一个空文件并将其存储在数据湖中。我想防止这种情况。我有什么办法可以做到这一点?

3 个答案:

答案 0 :(得分:2)

您可以使用lookup activity,然后使用if活动来决定是否需要运行复制活动。

在查找活动中,您可以将firstRowOnly设置为true,因为您只想检查是否有数据。

enter image description here

答案 1 :(得分:0)

我尝试了以下操作,并且该方法正常运行:我正在检查查找条目是否返回多于0行。

enter image description here

答案 2 :(得分:0)

这是一个较旧的线程,但是有人可以用一种更优雅的方式来处理以上问题,即使有0条记录,ADF也会生成文件。这是我对“查找”方法或进行后处理清理空文件的关注。

  1. 仅两次检查数据库是否存在效率低下。
  2. 如果您已经在ADF的[if组件]或[case]组件中,则无法使用[IF条件]组件。 (这也是ADF的限制/缺点)。
  3. 清理空文件的效率也很低,如果触发了正在创建文件的事件,清理空文件也不是一种选择,因为它会导致在写入之前会产生假阳性。