airflow.providers.snowflake.hooks.snowflake_sql_api¶
类¶
一个使用 SQL API 与 Snowflake 交互并在单个请求中提交多个 SQL 语句的客户端。 |
模块内容¶
- 类 airflow.providers.snowflake.hooks.snowflake_sql_api.SnowflakeSqlApiHook(snowflake_conn_id, token_life_time=LIFETIME, token_renewal_delta=RENEWAL_DELTA, *args, **kwargs)[source]¶
基类:
airflow.providers.snowflake.hooks.snowflake.SnowflakeHook
一个使用 SQL API 与 Snowflake 交互并在单个请求中提交多个 SQL 语句的客户端。
结合 aiohttp,通过发送 post 请求来提交 SQL 语句执行,轮询检查语句的执行状态。异步获取查询结果。
此 Hook 需要 snowflake_conn_id 连接。此 Hook 主要使用以下方式之一提供的 account、schema、database、warehouse 和认证机制:1. 从 private_key_file 或 private_key_content 生成的 JWT Token。其他输入可以在连接配置或 hook 实例化时定义。2. 使用连接配置中指定的 refresh_token、client_id 和 client_secret 生成的 OAuth Token。
- 参数:
snowflake_conn_id (str) – 引用 Snowflake 连接 ID
account – snowflake 账户名称
authenticator – Snowflake 的认证器。'snowflake'(默认)使用内部 Snowflake 认证器,'externalbrowser' 使用您的 Web 浏览器和 Okta、ADFS 或为您的账户定义的任何其他符合 SAML 2.0 的身份提供商(IdP)进行认证,'https://<your_okta_account_name>.okta.com' 通过原生 Okta 进行认证。
warehouse – snowflake 仓库名称
database – snowflake 数据库名称
region – snowflake 区域名称
role – snowflake 角色名称
schema – snowflake schema 名称
session_parameters – 连接到 Snowflake 时,您可以设置会话级参数
token_life_time (datetime.timedelta) – JWT Token 的生命周期,以 timedelta 表示
token_renewal_delta (datetime.timedelta) – JWT Token 的续期时间,以 timedelta 表示
deferrable – 在 deferrable 模式下运行 operator。
- execute_query(sql, statement_count, query_tag='', bindings=None)[source]¶
通过发送 API 请求,使用 SnowflakeSQL API 在 Snowflake 中运行查询。
- 参数:
sql (str) – 要执行的 sql 字符串,可能包含多个语句
statement_count (int) – 将 MULTI_STATEMENT_COUNT 字段设置为请求中的 SQL 语句数量
query_tag (str) – (可选) 要与 SQL 语句关联的查询标签。详细信息请参阅参数 https://docs.snowflake.com/en/sql-reference/parameters.html#label-query-tag 。
bindings (dict[str, Any] | None) – (可选) SQL 语句中绑定变量的值。执行语句时,Snowflake 会用这些指定的值替换语句中的占位符(? 和 :name)。
- get_request_url_header_params(query_id)[source]¶
从连接参数构建包含账户名称标识符和查询 ID 的请求头 Url。
- 参数:
query_id (str) – 语句句柄查询 ID,用于单个语句。