【问题标题】:Azure Data Factory : returns an array of dates from a specified rangeAzure 数据工厂:返回指定范围内的日期数组
【发布时间】:2020-12-13 14:13:30
【问题描述】:

我正在尝试在数据工厂中返回一组日期。但我只想让用户用两个参数指定日期范围,startDate 和 endDate:

我想通过在触发器中指定“12-08-2020”和“12-13-2020”来返回这个数组:

["12-08-2020","12-09-2020","12-10-2020","12-12-2020","12-13-2020"]

Do 还没有找到一个简单的方法来做到这一点。 我想到的一种方法是:

  • 在日期维度上添加查找活动,
  • 然后添加两个过滤器以仅选择大于 startDate 且小于 endDate 的项目。

但这似乎既麻烦又大材小用。有没有更简单的方法?


编辑:


这个答案似乎是相关的(我一开始没看到):Execute azure data factory foreach activity with start date and end date

【问题讨论】:

  • 嗨@GuillaumeLabs,我已经更新了我的答案。我认为使用查找活动更容易。

标签: date azure-data-factory


【解决方案1】:

我认为我们可以在查找活动中使用递归查询
伪代码如下:
在 sql 中我们可以使用这个查询来获取一个表:

;with temp as 
(
    select CONVERT(varchar(100),'12-08-2020', 110) as dt
union all 
    select CONVERT(varchar(100), DATEADD(day,1,dt), 110) from temp
    where datediff(day,CONVERT(varchar(100), DATEADD(day,1,dt), 110),'12-13-2020')>=0
) select * from temp    

结果如下:

所以在 ADF 中,我认为我们可以使用 Lookup sql 查询来返回您想要的结果。

根据这个official document,我们只需要替换sql语句的参数即可。

接下来,我将使用'@{pipeline().parameters.startDate}'返回一个日期字符串,注意:外面有一对单引号。

  1. 我设置两个参数如下:

  2. 在查找活动中键入以下代码。

;with temp as 
(
    select CONVERT(varchar(100),'@{pipeline().parameters.startDate}', 110) as dt
union all 
    select CONVERT(varchar(100), DATEADD(day,1,dt), 110) from temp
    where datediff(day,CONVERT(varchar(100), DATEADD(day,1,dt), 110),'@{pipeline().parameters.endDate}')>=0
) select * from temp

不要选择仅第一行

  1. 调试结果如下:

【讨论】:

    【解决方案2】:

    我有类似的用例,最终使用 Until 几乎没有什么变化。 两个参数,两个参数 start_dayend_day

    还必须引入两个变量来实现计数器逻辑。更多详情可以在how-to-increment-parameter-data-factory找到

    最后,直到块中的表达式是

    @less(int(adddays(pipeline().parameters.end_day, 0, 'yyyyMMdd')), int(adddays(pipeline().parameters.start_day, int(variables('counter')), 'yyyyMMdd')))
    

    final note until 块在表达式返回 false 时执行,并在 true

    【讨论】:

      猜你喜欢
      • 2020-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-21
      • 2019-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多