【问题标题】:Create an Azure Data Factory pipeline to copy new records from DocumentDB to Azure SQL创建 Azure 数据工厂管道以将新记录从 DocumentDB 复制到 Azure SQL
【发布时间】:2018-01-30 13:50:55
【问题描述】:

我正在尝试找到将昨天的数据从 DocumentDB 复制到 Azure SQL 的最佳方法。

我有一个可用的 DocumentDB 数据库,它记录通过 Web 服务收集的数据。我想定期(每天)将所有 new 记录从 DocumentDB 复制到 Azure SQL DB 表。为了做到这一点,我创建并成功执行了一个 Azure 数据工厂管道,它复制日期时间 > '2018-01-01' 的记录,但我只能让它在任意日期工作 - 从来没有从变量中获取日期。

我对 DocumentDB SQL 查询的研究表明,它具有数学、类型检查、字符串、数组和地理空间函数,但没有与 SQL Server 的 getdate() 函数等效的日期时间函数。

我了解数据工厂管道有一些可访问的系统变量,包括 utcnow()。但是,我无法弄清楚如何通过成功编辑 JSON 来实际使用它们。如果我尝试只在查询中包含 utcnow(),我会从 DocumentDB 收到一个错误,即“'utcnow' 不是可识别的内置函数名”。

"query": "SELECT * FROM c where c.StartTimestamp > utcnow()",

如果我尝试使用 utcnow() 在 JSON 中构建字符串,我什至无法保存它,因为语法错误:

"query": "SELECT * FROM c where c.StartTimestamp > " + utcnow(),

我愿意尝试与数据工厂管道不同的技术,但我的 DocumentDB 中有很多数据,所以我不想放弃它,而且我对 SQL 编程更加熟悉,需要迁移那里的数据用于加入和其他分析。

每天将这些新条目复制到 Azure SQL 中的暂存表中的最简单和最好的方法是什么?

【问题讨论】:

    标签: azure-sql-database azure-cosmosdb azure-data-factory


    【解决方案1】:

    您使用的是 ADF V2 还是 V1?

    适用于 ADF V2。 我认为您可以遵循他们推荐的增量方法,例如您可以有一个水印表(它可能在您的目标 Azure SQL 数据库中)和两个查找活动,其中一个查找将获得之前运行的水印值(它可以是日期、整数,无论​​您的审计值是什么)和另一个查找活动来获取源文档的 MAX(水印值,即日期),并有一个 CopyActivity 来获取 c.StartTimeStampLastWaterMarkValue.

    我使用 Python SDK 遵循这个示例并为我工作。

    https://docs.microsoft.com/en-us/azure/data-factory/tutorial-incremental-copy-powershell

    【讨论】:

    • 我使用的是 V1,因为这是我第一次尝试它时唯一的版本。我今天刚刚发现了 V2,我会尝试一下。
    猜你喜欢
    • 1970-01-01
    • 2020-12-31
    • 2022-01-06
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    • 2021-02-12
    • 1970-01-01
    相关资源
    最近更新 更多