【问题标题】:Prevent empty file generation using Azure Data Factory Copy Activity使用 Azure 数据工厂复制活动防止生成空文件
【发布时间】:2019-03-09 03:15:47
【问题描述】:

我正在使用 Azure 数据工厂将数据从 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' )}'

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我尝试了以下方法,它正在工作:我正在检查查找条目是否返回超过 0 行。

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 2021-07-02
          • 2022-01-04
          • 1970-01-01
          • 2020-08-14
          • 2020-12-13
          • 1970-01-01
          • 2020-09-15
          • 2021-06-10
          • 1970-01-01
          相关资源
          最近更新 更多