airflow.providers.snowflake.hooks.snowflake

属性

T

SnowflakeHook

与 Snowflake 交互的客户端。

模块内容

airflow.providers.snowflake.hooks.snowflake.T[源]
class airflow.providers.snowflake.hooks.snowflake.SnowflakeHook(*args, **kwargs)[源]

基类: airflow.providers.common.sql.hooks.sql.DbApiHook

与 Snowflake 交互的客户端。

此 Hook 需要 snowflake_conn_id 连接。必须在连接中设置 Snowflake 账号、登录名和密码字段。其他输入可在连接或 Hook 实例化时定义。

参数:
  • snowflake_conn_id – 参考 Snowflake 连接 ID

  • account – Snowflake 账号名称

  • authenticator – Snowflake 认证器。'snowflake'(默认)使用内部 Snowflake 认证器;'externalbrowser' 使用网页浏览器和 Okta、ADFS 或为您的账号定义的任何其他 SAML 2.0 兼容身份提供商 (IdP) 进行认证;https://<your_okta_account_name>.okta.com 通过原生 Okta 进行认证。

  • warehouse – Snowflake 数据仓库名称

  • database – Snowflake 数据库名称

  • region – Snowflake 区域名称

  • role – Snowflake 角色名称

  • schema – Snowflake 模式名称

  • session_parameters – 连接到 Snowflake 时可以设置会话级参数

  • insecure_mode – 关闭 OCSP 证书检查。详情请参阅:如何关闭 Snowflake 客户端驱动程序中的 OCSP 检查 - Snowflake 社区

注意

get_sqlalchemy_engine() 依赖于 snowflake-sqlalchemy

conn_name_attr = 'snowflake_conn_id'[源]
default_conn_name = 'snowflake_default'[源]
conn_type ='snowflake'[源]
hook_name = 'Snowflake'[源]
supports_autocommit = True[源]
classmethod get_connection_form_widgets()[源]

返回要添加到连接表单的连接小部件。

classmethod get_ui_field_behaviour()[源]

返回自定义字段行为。

account[源]
warehouse[源]
database[源]
region[源]
role[源]
schema[源]
authenticator[源]
session_parameters[源]
client_request_mfa_token[源]
client_store_temporary_credential[源]
query_ids: list[str] = [][源]
get_uri()[源]

覆盖 DbApiHook 的 get_uri 方法,用于 get_sqlalchemy_engine()。

get_conn()[源]

返回一个 snowflake.connection 对象。

get_sqlalchemy_engine(engine_kwargs=None)[源]

获取一个 sqlalchemy_engine 对象。

参数:

engine_kwargs – 在 create_engine() 中使用的 Kwargs。

返回:

创建的引擎。

get_snowpark_session()[源]

获取一个 Snowpark 会话对象。

返回:

创建的会话。

set_autocommit(conn, autocommit)[源]

在连接上设置自动提交标志。

get_autocommit(conn)[源]

获取提供的连接的自动提交设置。

参数:

conn – 获取自动提交设置的连接。

返回:

连接自动提交设置。如果 autocommit 在连接上设置为 True,则为 True。如果未设置、设置为 False 或连接不支持自动提交,则为 False。

run(sql: str | collections.abc.Iterable[str], autocommit: bool = ..., parameters: collections.abc.Iterable | collections.abc.Mapping[str, Any] | None = ..., handler: None = ..., split_statements: bool = ..., return_last: bool = ..., return_dictionaries: bool = ...) None[源]
run(sql: str | collections.abc.Iterable[str], autocommit: bool = ..., parameters: collections.abc.Iterable | collections.abc.Mapping[str, Any] | None = ..., handler: Callable[[Any], T] = ..., split_statements: bool = ..., return_last: bool = ..., return_dictionaries: bool = ...) tuple | list[tuple] | list[list[tuple] | tuple] | None

运行一个命令或命令列表。

将 SQL 语句列表传递给 SQL 参数以使其按顺序执行。如果设置了 handler 可调用对象,则返回查询结果。

参数:
  • sql – 要执行的可能包含多个语句的 SQL 字符串,或要执行的 SQL 语句列表

  • autocommit – 在执行查询之前将连接的自动提交设置为何值。

  • parameters – 用于渲染 SQL 查询的参数。

  • handler – 处理每个语句结果的结果处理器。

  • split_statements – 是否将单个 SQL 字符串拆分为多个语句并单独运行

  • return_last – 是仅返回最后一个语句的结果,还是在拆分后返回所有语句的结果。

  • return_dictionaries – 是返回字典而不是常规 DBAPI 序列作为结果中的行。字典的形式为 { 'column1_name': value1, 'column2_name': value2 ... }

返回:

如果设置了 handler,则返回最后一个 SQL 语句的结果。否则返回 None

get_openlineage_database_info(connection)[源]

返回生成和解析 lineage 元数据所需的特定于数据库的信息。

这包括有助于构建信息模式查询和创建正确命名空间的信息。

参数:

connection – Airflow 连接,用于减少对 get_connection 方法的调用

get_openlineage_database_dialect(_)[源]

返回用于 SQL 解析的数据库方言。

支持的方言列表请参见:https://openlineage.io/docs/development/sql#sql-dialects

get_openlineage_default_schema()[源]

返回特定于数据库的默认模式。

get_openlineage_database_specific_lineage(task_instance)[源]

根据执行的查询 ID 为 Snowflake 任务实例生成 OpenLineage 元数据。

如果存在单个查询 ID,则将 ExternalQueryRunFacet 附加到 lineage 元数据。如果存在多个查询 ID,则为每个查询发出单独的 OpenLineage 事件。

请注意,get_openlineage_database_specific_lineage 通常在任务执行后调用,因此如果存在多个查询 ID,则每个查询的 START 和 COMPLETE 事件都将在任务执行后发出。如果能够查询 Snowflake 以获取查询执行元数据,查询事件时间将对应于实际查询的开始和结束时间。

参数

task_instance: 正在收集 lineage 的 Airflow TaskInstance 对象。

返回

如果找到单个查询 ID,则返回一个 OperatorLineage 对象;否则返回 None

此条目有帮助吗?