如何使用 ADF 通过复制任务和一些条件将数据从一个 Cosmos 数据库迁移到另一个 Cosmos 数据库

问题描述 投票:0回答:1

我有两个 Azure Cosmos 数据库,我需要将数据从一个数据库迁移到另一个数据库。但是接收器容器已经有数据了。我需要检查源和目标的时间戳,并且仅当源数据是最新的(例如>一月时间戳)时才更新目标,否则不更新。现在我有一个复制任务将所有数据从源复制到接收器,但我如何在 adf 管道中添加上述条件。

水槽只有

Sink image

更新或插入,但不知道如何在 ADF 管道中过滤此条件

azure azure-data-factory azure-cosmosdb
1个回答
0
投票
如果接收器中不存在唯一键列值,则 ADF 复制活动中的

Upsert
选项将插入,并且当接收器中存在键列值时,它将更新接收器。它不会检查源数据和接收器数据是否有变化。当源数据存储和接收器数据存储之间的关键列匹配时,它只会更新。对于您的问题,您可以仅从源中过滤最新记录,然后复制到接收器容器。这将确保只复制更改的记录或新记录。以下是您想要在 ADF 复制活动中进行的更改。

  • 在复制活动源设置中,您可以在use query按钮中选择

    查询
    选项。

  • 在查询文本框中,点击

    add dynamic content
    并添加查询

select * from c where c.timestamp_column > @{variables('date')}

  • 在此示例中,我将接收器数据存储区的最新日期存储在名为 date 的变量中。您可以将该值存储在某个数据存储中,然后也在此查询中使用它。

这样,只有最新的记录才会被移动以进行更新插入操作。

© www.soinside.com 2019 - 2024. All rights reserved.