# sqlglot-lineage **Repository Path**: tensory/sqlglot-lineage ## Basic Information - **Project Name**: sqlglot-lineage - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-22 - **Last Updated**: 2025-04-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 1. Select 节点 用途:表示 SQL 中的 SELECT 语句。 常见属性: expressions:一个列表,存储 SELECT 子句后面的投影列或表达式对应的节点。 from_:指向 From 节点,存储 FROM 子句的信息,即查询数据的来源表。 where:指向 Where 节点,存储 WHERE 子句的过滤条件。 group_by:指向 Group 节点,存储 GROUP BY 子句的分组信息。 having:指向 Having 节点,存储 HAVING 子句的分组过滤条件。 order_by:指向 Order 节点,存储 ORDER BY 子句的排序信息。 limit:指向 Limit 节点,存储 LIMIT 子句的限制行数信息。 with_:指向 With 节点,存储 WITH 子句定义的公共表表达式(CTE)。 2. From 节点 用途:表示 SQL 中的 FROM 子句。 常见属性: expressions:一个列表,存储 FROM 子句中的表引用,表引用可以是 Table 节点、Subquery 节点或 Join 节点等。 3. Table 节点 用途:表示 SQL 中的表名。 常见属性: name:存储表的名称。 4. Column 节点 用途:表示 SQL 中的列名。 常见属性: name:存储列的名称。 5. Alias 节点 用途:为一个表达式赋予别名。 常见属性: this:指向被别名修饰的表达式对应的节点。 alias:存储别名的名称。 6. Where 节点 用途:表示 SQL 中的 WHERE 子句。 常见属性: this:指向 WHERE 子句中的过滤条件表达式对应的节点。 7. Group 节点 用途:表示 SQL 中的 GROUP BY 子句。 常见属性: expressions:一个列表,存储 GROUP BY 子句中的分组列或表达式对应的节点。 8. Having 节点 用途:表示 SQL 中的 HAVING 子句。 常见属性: this:指向 HAVING 子句中的分组过滤条件表达式对应的节点。 9. Order 节点 用途:表示 SQL 中的 ORDER BY 子句。 常见属性: expressions:一个列表,存储 ORDER BY 子句中的排序列或表达式对应的节点。每个元素可以是一个 Column 节点或带有排序方向的表达式节点。 10. Limit 节点 用途:表示 SQL 中的 LIMIT 子句。 常见属性: this:指向 LIMIT 子句中的限制行数对应的节点。 11. With 节点 用途:表示 SQL 中的 WITH 子句,用于定义公共表表达式(CTE)。 常见属性: expressions:一个列表,存储每个 CTE 定义对应的 Alias 节点。 12. Subquery 节点 用途:表示 SQL 中的子查询。 常见属性: this:指向子查询的 Select 节点。 alias:存储子查询的别名(如果有的话)。 13. Join 节点 用途:表示 SQL 中的表连接操作。 常见属性: this:指向参与连接的第一个表引用对应的节点。 expressions:一个列表,存储连接的条件表达式和其他参与连接的表引用对应的节点。 =============== 解析预期 在解析 Select 节点时,针对每个子节点属性可以设定明确的解析预期: 1. expressions:预期解析出 SELECT 子句后面的投影列或表达式,这些可以是列名、函数调用、通配符等。可以预期解析出每个投影项的类型(如 Column、Func、Star 等)以及相关的属性(如列名、函数名等)。 2. from_:预期解析出 FROM 子句中的表引用,可能是简单的表名(Table 节点)、子查询(Subquery 节点)或连接操作(Join 节点)。 3. where:预期解析出 WHERE 子句的过滤条件,通常是一个逻辑表达式,可能包含比较运算符、逻辑运算符等。 4. group_by:预期解析出 GROUP BY 子句的分组列或表达式。 5. havng:预期解析出 HAVING 子句的分组过滤条件。 6. order_by:预期解析出 ORDER BY 子句的排序列或表达式以及排序方向。 7. limit:预期解析出 LIMIT 子句的限制行数信息。 8. with_:预期解析出 WITH 子句定义的公共表表达式(CTE),包括每个 CTE 的名称和对应的查询语句。 通过设定这些解析预期,可以更有针对性地处理 Select 节点的各个子节点,确保准确解析 SQL 语句的含义。