用途:在用户要求从优化后的 Substrait 计划生成 DataStage 流程或 Python SDK 脚本时使用,是 di-agent-query-optimization 之后的 DataStage 流程生成交接环节。
主要能力:生成恰好两个阶段和一条链接——一个 SQL 模式数据库连接器源、一个 Sequential file 接收端,以及带优化输出模式的源到接收端链接;产出完整 SDK 脚本和用于 create_datastage_flow 的 MCP sdk_code 子集。
输入前提:输入必须是 di-agent-query-optimization 产出的优化计划,满足紧凑完整下推契约:恰好一个顶层 relation;包含 relations[0].root.input.read;read.common.advancedExtension.enhancement.nodeKind == "full_pushdown_read";sqlStatement 存在且非空;read.advanced_extension.optimization[0].connection_id 携带唯一源数据库连接 id。若为原始或降级计划,需先经 di-agent-query-optimization 处理。
运行元数据:需要 project_id、connection_name、connector_stage、output_file。connection_id 必须来自优化计划,不得虚构;connection_name 缺失时需向用户询问。output_file 默认使用无目录前缀的 <flow_name>.csv,因为 Sequential file 写入器不会创建父目录。
使用方式:先校验完整下推前提,读取 references/datastage-generation.md,提取 sqlStatement、connection_id、输出名称与类型及流程名,从连接器 SDK 参考解析标签、映射名、枚举与 SQL 模式读取支持,再按 template-skeleton.py 生成脚本。可用时通过 create_datastage_flow 创建流程;若因同名流程已存在而失败,不要自动重试,应询问用户是覆盖还是改名。
限制:仅支持紧凑完整下推形态;部分下推计划暂不支持,遇到 partial_pushdown_unsupported 应停止并说明。不推断或创建数据库连接;接收端始终为 Sequential file 阶段;不得插入额外阶段、转换器、连接或替代接收端。其他缺失字段应报告具体字段,仅在无法推导时索取元数据。