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