用途:把用户的自然语言数据请求转换为可执行 SQL。优先使用 Substrait 中间表示,仅在 DSL 编译失败、Substrait 不支持所需功能或运行时 /sql 转换失败时,才回退为模型直接生成 SQL。
主要能力与流程: 第一阶段生成 Substrait 计划:调用 get_substrait_dsl_examples 获取示例,用 list_data_assets 与 inspect_project_asset 校验资产模式与连接元数据,解析运行时 SQL 方言,调用 get_substrait_dsl_spec 编写 DSL,再用 compile_substrait_dsl 编译。若提供 asset_ids,ReadTable 使用空 NamedStruct({}),由工具解析表结构。仅对拼错列名、别名错误、简单语法笔误、缺少资产绑定等低风险错误重试,否则进入回退。 第二阶段转换 SQL:调用 substrait_to_sql(substrait_json=..., target_dialect=..., preprocessed=false),target_dialect 来自源连接元数据解析,无法识别时传空值并说明使用了运行时默认方言。 第三阶段回退:由当前模型直接生成 SQL,目标数据库优先取用户请求,其次取源元数据,不受运行时方言表限制;需在 SQL 前给出简要警告,说明确定性路径不可用及原因。
输出格式:成功时给出自然语言查询、目标数据库、Substrait 计划、生成 SQL 与所用方言特性;回退时给出查询、目标数据库、警告、SQL 与方言特性。
限制:substrait_to_sql 超时 60 秒;错误信息需脱敏,默认不展示原始编译或运行时错误;模式与数据源类型以资产工具为准,不得依赖示例或假设;目标数据库无法识别时仅在语义可保留时生成保守 ANSI SQL。支持数据库范围、具体方言映射表与收费信息暂未提供。