airflow.providers.snowflake.hooks.snowflake¶
属性¶
类¶
与 Snowflake 交互的客户端。 |
模块内容¶
- 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
- get_sqlalchemy_engine(engine_kwargs=None)[源]¶
获取一个 sqlalchemy_engine 对象。
- 参数:
engine_kwargs – 在
create_engine()
中使用的 Kwargs。- 返回:
创建的引擎。
- 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_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。