airflow.providers.openlineage.sqlparser

模块内容

GetTableSchemasParams

get_table_schemas 参数。

DatabaseInfo

包含处理 SQL 语句解析结果所需的数据库特定信息。

SQLParser

openlineage-sql 的接口。

函数

default_normalize_name_method(name)

from_table_meta(table_meta, database, namespace, ...)

属性

DEFAULT_NAMESPACE

DEFAULT_INFORMATION_SCHEMA_COLUMNS

DEFAULT_INFORMATION_SCHEMA_TABLE_NAME

airflow.providers.openlineage.sqlparser.DEFAULT_NAMESPACE = 'default'[源代码]
airflow.providers.openlineage.sqlparser.DEFAULT_INFORMATION_SCHEMA_COLUMNS = ['table_schema', 'table_name', 'column_name', 'ordinal_position', 'udt_name'][源代码]
airflow.providers.openlineage.sqlparser.DEFAULT_INFORMATION_SCHEMA_TABLE_NAME = 'information_schema.columns'[源代码]
airflow.providers.openlineage.sqlparser.default_normalize_name_method(name)[源代码]
class airflow.providers.openlineage.sqlparser.GetTableSchemasParams[源代码]

基类:airflow.typing_compat.TypedDict

get_table_schemas 参数。

normalize_name: Callable[[str], str][源代码]
is_cross_db: bool[源代码]
information_schema_columns: list[str][源代码]
information_schema_table: str[源代码]
use_flat_cross_db_query: bool[源代码]
is_uppercase_names: bool[源代码]
database: str | None[源代码]
class airflow.providers.openlineage.sqlparser.DatabaseInfo[源代码]

包含处理 SQL 语句解析结果所需的数据库特定信息。

参数
  • scheme – OpenLineage 命名空间中 URI 的方案部分。

  • authority – OpenLineage 命名空间中 URI 的授权部分。在大多数情况下,它应该返回 Airflow 连接的 {host}:{port} 部分。请参阅:https://github.com/OpenLineage/OpenLineage/blob/main/spec/Naming.md

  • database – 优先于解析的数据库名称。

  • information_schema_columns – 来自信息模式表的列名列表。

  • information_schema_table_name – 信息模式表名称。

  • use_flat_cross_db_query – 指定是否应该将单个信息模式表用于跨数据库查询(例如,对于 Redshift)。

  • is_information_schema_cross_db – 指定信息模式是否包含跨数据库数据。

  • is_uppercase_names – 指定数据库是否仅接受大写名称(例如,Snowflake)。

  • normalize_name_method – 用于规范化数据库、模式和表名称的方法。默认为 name.lower()

scheme: str[源代码]
authority: str | None[source]
database: str | None[source]
information_schema_columns: list[str][source]
information_schema_table_name: str[source]
use_flat_cross_db_query: bool = False[source]
is_information_schema_cross_db: bool = False[source]
is_uppercase_names: bool = False[source]
normalize_name_method: Callable[[str], str][source]
airflow.providers.openlineage.sqlparser.from_table_meta(table_meta, database, namespace, is_uppercase)[source]
class airflow.providers.openlineage.sqlparser.SQLParser(dialect=None, default_schema=None)[source]

基类: airflow.utils.log.logging_mixin.LoggingMixin

openlineage-sql 的接口。

参数
  • dialect (str | None) – 数据库特定的方言

  • default_schema (str | None) – 应用于每个未解析架构的表的架构

parse(sql)[source]

解析单个或 SQL 语句列表。

parse_table_schemas(hook, inputs, outputs, database_info, namespace=DEFAULT_NAMESPACE, database=None, sqlalchemy_engine=None)[source]

解析输入和输出表的架构。

get_metadata_from_parser(inputs, outputs, database_info, namespace=DEFAULT_NAMESPACE, database=None)[source]
attach_column_lineage(datasets, database, parse_result)[source]

将列血缘关系 facet 附加到数据集列表中。

请注意,目前每个数据集都设置了相同的列血缘关系信息。这将在 OpenLineage SQL Parser 改进后进行更改。

generate_openlineage_metadata_from_sql(sql, hook, database_info, database=None, sqlalchemy_engine=None, use_connection=True)[source]

解析 SQL 语句并生成 OpenLineage 元数据。

生成的 OpenLineage 元数据包含

  • 带有已解析架构的输入表

  • 带有已解析架构的输出表

  • 运行 facets

  • 作业 facets。

参数
  • sql (list[str] | str) – 要解析的 SQL 语句或 SQL 语句列表

  • hook (airflow.hooks.base.BaseHook) – 用于连接数据库的 Airflow Hook

  • database_info (DatabaseInfo) – 数据库特定信息

  • database (str | None) – 当传递此参数时,它将优先于解析的数据库名称

  • sqlalchemy_engine (sqlalchemy.engine.Engine | None) – 当传递此参数时,引擎的方言将用于编译 SQL 查询

static create_namespace(database_info)[source]
classmethod normalize_sql(sql)[source]

确保返回一个以分号分隔的 SQL 语句。

classmethod split_sql_string(sql)[source]

将 SQL 字符串拆分为语句列表。

如果可用,尝试使用 DbApiHook.split_sql_string。否则,使用相同的逻辑。

create_information_schema_query(tables, normalize_name, is_cross_db, information_schema_columns, information_schema_table, is_uppercase_names, use_flat_cross_db_query, database=None, sqlalchemy_engine=None)[source]

创建 SELECT 语句以查询信息模式表。

此条目是否有帮助?