SDF
SDF 是一个 SQL 理解引擎,它读取数据仓库中的 SQL,构建每个查询的中间表示,并在执行前标记错误。它位于分析堆栈中原始 SQL 文本和数据库之间,为团队提供编译时对语法、类型和下游列结构的洞察。
大多数 SQL 代码检查工具仅停留在表面语法层面。SDF 通过三个层级工作:解析为语法树,编译带有函数签名和返回类型的逻辑计划,以及在数据级检查重要时执行物理计划。这个层级结构能捕捉 Snowflake dateadd 调用中的错误参数顺序和解析器单独无法发现的不可能的日期类型转换,这也是 dbt Labs 收购 SDF Labs 并将该引擎嵌入 dbt 而非附加另一个字符串预处理器的原因。
分析工程师和 dbt 开发者使用 SDF 来强化大型仓库项目,追踪列级血缘关系,并减少运行时意外失败地发布转换。自 2024 年中期 GA 发布以来,sdf.com 将访问者引导至 dbt Labs 页面,解释此次收购如何将 SDF 融入下一代 dbt 引擎。
三种SQL理解层级:解析语法树、编译逻辑计划和执行物理计划
二级编译验证Snowflake函数签名并在运行前捕获错误的dateadd参数顺序
dbt Labs收购目标是实现dbt项目中的真正列级血缘关系
静态分析标记不可能的转换,例如解析器批准的1月32日日期
逻辑计划推断列返回类型,无需执行仓库查询
在解析、编译和执行阶段捕获SQL错误,而不仅仅是表面语法的lint
dbt Labs收购将SDF列级血缘关系引入已使用的dbt工作流程团队
逻辑计划分析验证函数签名,无需运行仓库查询
适用于大型Snowflake风格项目,细微类型错误容易被基本解析器遗漏
公共定价未在sdf.com或dbt收购页面列出
产品路线图现在以dbt集成为中心,而非独立的自助注册
深度价值假设已有现存的dbt或仓库规模的SQL项目
SDF对SQL团队有什么作用?
SDF将SQL视为结构化代码,而非纯文本。它构建语法树、逻辑计划和可选执行计划,因此SDF能在仓库作业运行前发现语法错误、类型不匹配和错误数据。
SDF支持多少级SQL理解?
SDF定义了三级。一级解析捕捉关键词拼写错误,二级编译检查函数签名和类型,三级执行验证实际数据值,如无效日期。
SDF和dbt有什么关系?
dbt Labs收购了SDF Labs,将SDF的SQL理解技术嵌入dbt。SDF技术正集成到dbt引擎中,为dbt开发者提供列级血缘和更快的编译时检查。
SDF能在执行前捕捉哪些SQL错误?
SDF能在解析时标记拼写错误的select关键词,在编译时发现dateadd参数顺序错误,以及在执行时检测到不可能的日期转换。
SDF是独立产品还是dbt的一部分?
SDF作为独立SQL理解产品于2024年中期发布正式版。访问sdf.com现会重定向到dbt Labs页面,介绍收购情况及将SDF整合入dbt的路线图。
SDF适合谁使用?
SDF面向管理大型SQL仓库的分析工程师和dbt开发者。该工具侧重于编译时验证、元数据和血缘,而非为临时分析师提供的即席查询编辑。

