You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按年度对Dagster资产进行分区?修改内置时间定义可行吗?

在Dagster中实现按年度分区的方法

Dagster确实没有内置的年度分区定义,但完全可以通过自定义分区配置来实现需求,下面是两种常用的实现方式:

方法一:基于时间窗口的年度分区

使用TimeWindowPartitionsDefinition,通过配置年度级别的cron调度和格式化规则,自动生成年度分区:

from dagster import TimeWindowPartitionsDefinition

# 定义年度分区:每年1月1日0点触发,分区键为年份格式
annual_time_partitions = TimeWindowPartitionsDefinition(
    cron_schedule="0 0 1 1 *",  # cron表达式:每年1月1日午夜执行
    start_date="2020-01-01",    # 起始年份
    fmt="%Y",                   # 分区键格式为4位年份
    timezone="UTC"              # 按需指定时区
)

# 在资产中引用该分区定义
@asset(partitions_def=annual_time_partitions)
def yearly_summary_asset(context):
    current_year = context.partition_key
    # 这里编写处理对应年度数据的业务逻辑
    return f"Generated summary for year {current_year}"

这种方式会自动生成从start_date到未来的所有年度分区,适合需要持续新增年度数据的场景。

方法二:静态年度分区列表

如果只需要处理固定范围的年度,可以用StaticPartitionsDefinition手动指定分区列表:

from dagster import StaticPartitionsDefinition

# 手动指定需要处理的年度
annual_static_partitions = StaticPartitionsDefinition(
    partitions=["2020", "2021", "2022", "2023", "2024"]
)

@asset(partitions_def=annual_static_partitions)
def historical_yearly_asset(context):
    target_year = context.partition_key
    # 处理历史年度数据的逻辑
    return f"Processed historical data for {target_year}"

这种方式更灵活,适合仅需处理特定年度的场景,后续可以随时手动添加新的年度分区。

内容的提问来源于stack exchange,提问作者Edan Coben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 10:33:23