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

防止使用Azure Data Factory复制活动生成空文件,azure,azure-data-factory,azure-data-lake,azure-data-factory-2,Azure,Azure Data Factory,Azure Data Lake,Azure Data Factory 2,我正在使用Azure Data Factory将数据从Azure Cosmos DB复制到Azure Data Lake。我的管道由一个复制活动组成,该活动将数据复制到数据池接收器 这是我对源数据集的查询: select * from c where c.data.timestamp >= '@{formatDateTime(addminutes(pipeline().TriggerTime, -15), 'yyyy-MM-ddTHH:mm:ssZ' )}' AND c.data.ti

我正在使用Azure Data Factory将数据从Azure Cosmos DB复制到Azure Data Lake。我的管道由一个复制活动组成,该活动将数据复制到数据池接收器

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

select * from c 
where c.data.timestamp >= '@{formatDateTime(addminutes(pipeline().TriggerTime, -15), 'yyyy-MM-ddTHH:mm:ssZ' )}' 
AND c.data.timestamp < '@{formatDateTime(pipeline().TriggerTime, 'yyyy-MM-ddTHH:mm:ssZ' )}'
从c中选择*
其中c.data.timestamp>='@{formatDateTime(addminutes(pipeline().TriggerTime,-15),'yyyy-MM-ddTHH:MM:ssZ'))
和c.data.timestamp<'@{formatDateTime(pipeline().TriggerTime,'yyyy-MM-ddTHH:MM:ssZ')}
我正在获取触发时间前15分钟的数据

现在,如果查询没有检索到数据,那么复制活动将生成一个空文件并将其存储在数据池中。我想防止这种情况发生。有什么方法可以实现这一点吗?

您可以使用,然后使用“如果”活动来决定是否需要运行“复制”活动

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

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

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


我尝试了以下方法,但效果良好:我正在检查查找条目是否返回超过0行


我尝试了以下方法,但效果良好:我正在检查查找条目是否返回超过0行


这是一个较旧的线程,但有人可能有一种更优雅的方法来处理上述问题,即即使有0条记录,ADF也会生成一个文件。以下是我对查找方法或让后期处理清理空文件的担忧

  • 仅仅为了第一次检查是否有行而查询数据库两次是低效的
  • 如果您已经在ADF的[IF component]或[case]组件中,则无法使用[IF Condition]组件。(这也是ADF的限制/缺点)
  • 清理空文件的效率也很低,如果您正在触发创建文件的事件,则这不是一个选项,因为在您清理文件之前写入文件会导致误报

  • 这是一个较旧的线程,但有人可能有一个更优雅的方法来处理上述问题,即即使有0条记录,ADF也会生成一个文件。以下是我对查找方法或让后期处理清理空文件的担忧

  • 仅仅为了第一次检查是否有行而查询数据库两次是低效的
  • 如果您已经在ADF的[IF component]或[case]组件中,则无法使用[IF Condition]组件。(这也是ADF的限制/缺点)
  • 清理空文件的效率也很低,如果您正在触发创建文件的事件,则这不是一个选项,因为在您清理文件之前写入文件会导致误报