airflow.providers.snowflake.hooks.snowflake_sql_api

SnowflakeSqlApiHook

一个使用 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。

LIFETIME[source]
RENEWAL_DELTA[source]
snowflake_conn_id[source]
token_life_time[source]
token_renewal_delta[source]
private_key: Any = None[source]
属性 account_identifier: str[source]

返回 snowflake 账户标识符。

get_private_key()[source]

从 snowflake 连接获取私钥。

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_headers()[source]

根据 OAuth token 或从私钥生成的 JWT token 构建认证头。

get_oauth_token()[source]

使用连接详情中的 refresh token 生成临时的 OAuth access token。

get_request_url_header_params(query_id)[source]

从连接参数构建包含账户名称标识符和查询 ID 的请求头 Url。

参数:

query_id (str) – 语句句柄查询 ID,用于单个语句。

check_query_output(query_ids)[source]

根据提供的查询 ID 向 snowflake SQL API 发起 HTTP 请求并记录响应。

参数:

query_ids (list[str]) – 语句句柄查询 ID 列表,用于单个语句。

get_sql_api_query_status(query_id)[source]

根据查询 ID 向 snowflake SQL API 发起异步 HTTP 请求并返回响应。

参数:

query_id (str) – 语句句柄 ID,用于单个语句。

异步 get_sql_api_query_status_async(query_id)[source]

根据查询 ID 向 snowflake SQL API 发起异步 HTTP 请求并返回响应。

参数:

query_id (str) – 语句句柄 ID,用于单个语句。

此条目有帮助吗?