首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于最后一个高水标值的数据工厂副本(动态日期)

基于最后一个高水标值的数据工厂副本(动态日期)
EN

Stack Overflow用户
提问于 2022-11-04 11:58:36
回答 2查看 64关注 0票数 0

我目前正在进行一个项目,在这个项目中,我需要数据工厂管道根据上一个运行日期进行复制。

程序故障..。

  1. 数据被输入存储帐户。
  2. 所摄取的数据采用目录格式--主题/yyyy/mm/dd,即将多个文件放在一个目录中,因此它的文件按日期进行分区,这些日期看起来类似于这个日格式月份和年份等。
  3. 该过程目前基于最后一个高水标记日期进行筛选,每次管道运行时更新,并且每天凌晨4时触发,一旦复制成功,设置变量将高水标记值增加1(即某一天),但文件不会在周末被带过来(这就是问题所在)。
  4. 如果没有带来任何文件,则日期值(HWM)不会增加,并且将继续遍历同一日期。
  5. 如何使管道增加或查找该目录中的下一个文件,因为我使用HWV作为该文件的目录,只有在动态完成时才复制和更新HWM值。当前更新逻辑
  6. HWV 复制文件的查找和目录路径的电流查找
EN

回答 2

Stack Overflow用户

发布于 2022-11-07 10:29:24

我们可以尝试将当前的UTC作为水印值来更新,而不是将1添加到最后的高水标值。这样,即使管道未被触发,数据也将被复制到正确的目标文件夹中。我已经尝试在我的环境中复制,下面是方法。

  • 水印表的初始水印值为'1970-01-01‘。

  • 此表在查找活动中引用。

  • 添加了复制数据活动,在源中,查询以select * from tab1 where lastmodified > '@{activity('Lookup1').output.firstRow.watermark_value}'形式提供。

  • 在水槽里,布洛布的储藏室被拿走。为了将文件夹结构作为年/月/日,在文件夹路径中给出了@concat(formatDateTime(utcnow(),'yyyy'),'/', formatDateTime(utcnow(),'mm'),'/',formatDateTime(utcnow(),'dd'))

  • 文件按下面的路径复制。

  • 复制文件后,水印值将按照当前的UTC时间更新。
代码语言:javascript
复制
update watermark_table
set
watermark_value='@{formatDateTime(utcnow(),'yyyy-MM-dd')}'
where tab_name='tab1'

  • 当第二天触发流水线时,将从水印值复制数据,一旦文件被复制,当前UTC的值将被更新为水印值。
票数 0
EN

Stack Overflow用户

发布于 2022-11-17 03:03:53

我想读几遍这篇文章,我所理解的是

  • 你已经有了水渍逻辑。
  • 在周末,当文件夹中没有文件时,当前逻辑不会增加水印,因此您将面临问题。

如果我没听错的话。请使用@dayOfWeek()函数。添加一个If语句,并让当前的逻辑只在周中的一天是星期一(2)-Friday(6)时执行。

https://learn.microsoft.com/en-us/azure/data-factory/data-flow-expressions-usage#dayofweek

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74316705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档