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,用於單個語句。

此條目有幫助嗎?