系统内置变量

Recurve 产品内提供多种内置变量,可以基于调度时间定义数据范围

内置变量

变量名称
类型
描述

data_interval_start

datetime.datetime

表示当前调度批次所处理的数据范围的开始时间,结合调度周期来确定。

data_interval_end

datetime.datetime

表示当前调度批次所处理的数据范围的结束时间,结合调度周期来确定。

logical_date

datetime.datetime

表示调度批次的逻辑时间,通常与 data_interval_end 相等

dt

datetime.date

logical_date的日期部分

yesterday

datetime.datetime

logical_date的前一天,在日度任务中有用,其他周期不要使用

yesterday_dt

datetime.date

yesterday的日期部分

tomorrow

datetime.datetime

logical_date 的后一天,在日度任务中有用,其他周期不要使用

tomorrow_dt

datetime.date

tomorrow 的日期部分

以每天 10 点运行的日度任务为例,在 2025-02-01 这一天,各个变量的值为:

  • data_interval_start:是 T-1 的 10 点,即 2025-01-31 10:00:00

  • data_interval_end:是 T 的 10 点,即 2025-02-01 10:00:00(同理,如果是周度、月度的,data_interval_end 就是本次调度度的逻辑时间(不是系统时间),data_interval_start 就是上一个周期)

  • logical_date2025-02-01 10:00:00

  • dt2025-02-01

  • yesterday: 2025-01-31 10:00:00

  • yesterday_dt: 2025-01-31

  • tomorrow: 2025-02-02 10:00:00

  • tomorrow_dt: 2025-02-02

以每月 1 号 10点运行月度任务为例,在 2025-02-01 这一天,各个变量的值为:

  • data_interval_start:表示 1 月 1 日 10 点,即 2025-01-01 10:00:00

  • data_interval_end2025-02-01 10:00:00

  • logical_date2025-02-01 10:00:00

  • dt2025-02-01

以下几个变量是方便在日度任务中使用的,在月度(及其他)任务中仍然有值,但是通常没有实际用途,建议不要使用

  • yesterday: 2025-01-31 10:00:00

  • yesterday_dt: 2025-01-31

  • tomorrow: 2025-02-02 10:00:00

  • tomorrow_dt: 2025-02-02

使用系统变量

你可以在数据模型、高级管道中使用这些系统变量,在代码中使用 {{ var("变量名称") }}

例如:在数据建模中增量更新当天的数据

 select ...
 from {{ source("jaffle_shop", "raw_orders") }}
 where dt = {{ var('dt') }}

通常建议使用 data_interval_startdata_interval_end 来圈定数据范围,因为能根据调度周期自动灵活调整。可以使用这两个时间进行演变,得到其他格式,如:

# 获取日期部分,返回 datetime.date 类型,date(2025, 1, 1)
{{ var("data_interval_start").date() }}

# 格式化为 `20250101`,结果是个字符串
{{ var("data_interval_start").strftime("%Y%m%d") }}

Last updated