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'[source]
airflow.providers.openlineage.sqlparser.DEFAULT_INFORMATION_SCHEMA_COLUMNS = ['table_schema', 'table_name', 'column_name', 'ordinal_position', 'udt_name'][source]
airflow.providers.openlineage.sqlparser.DEFAULT_INFORMATION_SCHEMA_TABLE_NAME = 'information_schema.columns'[source]
airflow.providers.openlineage.sqlparser.default_normalize_name_method(name)[source]
class airflow.providers.openlineage.sqlparser.GetTableSchemasParams[source]

基底類別: airflow.typing_compat.TypedDict

get_table_schemas 參數。

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

包含處理 SQL 陳述式剖析結果所需的資料庫特定資訊。

參數
  • scheme – OpenLineage 命名空間中 URI 的 Scheme 部分。

  • authority – OpenLineage 命名空間中 URI 的 Authority 部分。在大多數情況下,它應該傳回 Airflow 連線的 {host}:{port} 部分。請參閱: https://github.com/OpenLineage/OpenLineage/blob/main/spec/Naming.md

  • database – 優先於已剖析的資料庫名稱。

  • information_schema_columns – 來自 information schema 表格的欄位名稱清單。

  • information_schema_table_name – Information schema 表格名稱。

  • use_flat_cross_db_query – 指定是否應將單一 information schema 表格用於跨資料庫查詢(例如,Redshift)。

  • is_information_schema_cross_db – 指定 information schema 是否包含跨資料庫資料。

  • is_uppercase_names – 指定資料庫是否僅接受大寫名稱(例如 Snowflake)。

  • normalize_name_method – 正規化資料庫、結構描述和表格名稱的方法。預設為 name.lower()

scheme: str[source]
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 metadata。

產生的 OpenLineage metadata 包含

  • 已剖析結構描述的輸入表格

  • 已剖析結構描述的輸出表格

  • 執行 facet

  • 工作 facet。

參數
  • 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 陳述式以查詢 information schema 表格。

此條目是否有幫助?