首页 文章

创建Azure数据工厂管道以将新记录从DocumentDB复制到Azure SQL

提问于
浏览
1

我试图找到将昨天的数据从DocumentDB复制到Azure SQL的最佳方法 .

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

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

据我所知,Data Factory Pipelines有一些可访问的系统变量,包括utcnow() . 但是,我无法弄清楚如何通过成功编辑JSON来实际使用它们 . 如果我尝试在查询中包含utcnow(),我会从DocumentDB得到一个错误,“'utcnow'不是公认的内置函数名” .

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

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

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

我愿意尝试使用与Data Factory Pipeline不同的技术,但是我在DocumentDB中有很多数据,所以我对放弃它并不感兴趣,而且我对SQL编程有更多的了解,需要在那里移动数据加入和其他分析 .

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

1 回答

  • 1

    您使用的是ADF V2还是V1?

    对于ADF V2 . 我认为你可以按照他们推荐的增量方法,例如你可以有一个水印表(它可能在你的目标Azure SQL数据库中)和两个查找活动,其中一个查找将获得以前运行的水印值(它可以是日期,整数,无论您的审计值是什么)和另一个查找活动,以获取源文档的MAX(watermark_value,即日期),并具有CopyActivity,其获取c.StartTimeStamp <= MaxWatermarkValueFromSource AND c的所有值 . StartTimeStamp> LastWaterMarkValue .

    我使用Python SDK跟随这个例子,并为我工作 .

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

相关问题