name: dag-generate description: 从您的 Starlake 项目生成编排 DAG(Airflow/Dagster)
DAG 生成技能
从您的 Starlake 项目配置生成编排 DAG 文件(Airflow Python DAGs 或 Dagster jobs)。DAGs 是从 Jinja2 模板生成的,并且可以按域、表或任务自定义。
用法
starlake dag-generate [options]
选项
--outputDir <value>: 输出目录用于生成的 DAG 文件--clean: 在生成前清理输出目录--tags <value>: 仅生成匹配这些标签的任务/表的 DAG--tasks: 生成变换任务的 DAG 文件--domains: 生成加载域的 DAG 文件--withRoles: 在生成的 DAG 中包含角色定义--reportFormat <value>: 报告输出格式:console,json, 或html
配置上下文
DAG 配置文件 (metadata/dags/{name}.sl.yml)
每个 DAG 配置指定一个模板和输出文件名:
# metadata/dags/airflow_load_shell.sl.yml
version: 1
dag:
comment: "示例 dag 配置"
template: "load/airflow__scheduled_table__shell.py.j2"
filename: "airflow_all_tables.py"
options:
sl_env_var: '{"SL_ROOT": "{{SL_ROOT}}"}'
# metadata/dags/airflow_transform_shell.sl.yml
dag:
comment: "示例 dag 配置"
template: "transform/airflow__scheduled_task__shell.py.j2"
filename: "airflow_all_tasks.py"
options:
run_dependencies_first: "true"
Dagster DAG 配置
# metadata/dags/dagster_load_shell.sl.yml
dag:
comment: "{{domain}} 的数据加载"
template: "load/dagster__scheduled_table__shell.py.j2"
filename: "dagster_all_load.py"
options:
run_dependencies_first: "true"
sl_env_var: '{"SL_ROOT": "{{SL_ROOT}}"}'
SL_STARLAKE_PATH: "{{SL_ROOT}}/starlake"
pre_load_strategy: "none" # 待处理, 已导入, 确认, 无
global_ack_file_path: "{{SL_ROOT}}/datasets/pending/starbake/GO.ack"
ack_wait_timeout: "60" # 秒
DAG 参考分配
DAGs 在 application.sl.yml 中在项目级别分配,并且可以在域或表级别覆盖:
# metadata/application.sl.yml
application:
dagRef:
load: "airflow_load_shell" # 所有加载任务的默认 DAG
transform: "airflow_transform_shell" # 所有变换的默认 DAG
在域级别覆盖:
# metadata/load/starbake/_config.sl.yml
load:
metadata:
dagRef: "custom_load_dag"
在表/任务级别覆盖:
# metadata/load/starbake/orders.sl.yml
table:
metadata:
dagRef: "orders_specific_dag"
优先级 (从低到高): 项目 → 域 → 表/任务
示例
生成所有 DAG
starlake dag-generate --outputDir /tmp/dags --clean
仅生成加载 DAG
starlake dag-generate --domains --outputDir /tmp/dags
仅生成变换 DAG
starlake dag-generate --tasks --outputDir /tmp/dags
为特定标签生成 DAG
starlake dag-generate --tags daily,critical --outputDir /tmp/dags
生成带角色定义的 DAG
starlake dag-generate --outputDir /tmp/dags --withRoles --clean
相关技能
- dag-deploy - 将生成的 DAG 部署到目标目录
- transform - 运行变换任务
- load - 加载数据
- lineage - 可视化任务依赖
- config - 配置参考 (DAG 选项)