如何解决Azure数据工厂-使用动态时间戳查询Cosmos DB
我想在Cosmos DB中创建和维护集合的快照。
定期,我只想从Cosmos中检索增量(新文档或修改后的文档)并将其写入快照,该快照将存储在Azure Data Explorer群集中。
我希望使用文档的_ts成员获取增量。换句话说,我将仅提取_ts在某个范围之间的记录。
该范围将是一个时间窗口的范围,该时间窗口是我在数据工厂中使用滚动窗口触发器获得的。
问题是,如果我打印在查询中创建的动态时间戳记,并将其硬编码到查询中,那么它将起作用。但是,如果我让查询生成它们,则不会得到任何结果。
例如:
我正在使用这些值来模拟触发器的窗口范围。
我使用此查询在Unix时间中创建时间戳。
我看到创建的时间戳是正确的。
如果我使用这些硬编码的时间戳运行查询,我会得到结果
但是,如果我使用仅创建这些时间戳记的代码运行查询,则查询不会得到结果
这是创建时间戳的代码:
select
DateTimeToTimestamp('@{formatDateTime('2020-05-20T12:00:00.0000000Z','yyyy-MM
ddTHH:mm:ss.fffffffZ')}')/1000,DateTimeToTimestamp('@{formatDateTime('2020-08-20T12:00:00.0000000Z','yyyy-MM
ddTHH:mm:ss.fffffffZ')}')/1000
有人知道这可能是什么问题吗?
欢迎使用其他任何方法来实现这一目标。
谢谢
编辑:我设法通过采用另一个更简单的方法来解决此问题:
where TimestampToDateTime(c._ts*1000)> "@{formatDateTime(pipeline().parameters.windowStart,'yyyy-MM-ddTHH:mm:ss.fffffffZ')}"
解决方法
我们很高兴您解决了这个问题:
您设法通过采用另一个更简单的方法来解决此问题:
where TimestampToDateTime(c._ts*1000)> "@{formatDateTime(pipeline().parameters.windowStart,'yyyy-MM-ddTHH:mm:ss.fffffffZ')}"
我认为,第一个选项中的错误主要是由c.ts
和DateTimeToTimestamp('@{formatDateTime('2020-05-20T12:00:00.0000000Z','yyyy-MM ddTHH:mm:ss.fffffffZ')}')/1000
之间的不同数据类型引起的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。