如要將 Looker 連線至 Snowflake,請按照下列步驟操作:
- 在 Snowflake 上建立 Looker 使用者,並提供存取權。
- 在 Looker 中設定資料庫連線。
加密網路流量
最佳做法是加密 Looker 應用程式和資料庫之間的網路流量。請考慮採用「啟用安全的資料庫存取權」說明文件頁面所述的其中一個選項。
在 Snowflake 建立 Looker 使用者
建議使用下列指令建立 Looker 使用者。請務必個別執行每一行,或在 Snowflake 連線面板中選取「All Queries」選項,確保所有行都執行 (根據預設,Snowflake 只會執行選取的行):

建議您在每個 GRANT 陳述式中加入 ON FUTURE 關鍵字,這樣新建立的物件就會有相同權限,不必再採取其他動作。
-- change role to ACCOUNTADMIN
use role ACCOUNTADMIN;
-- create role for looker
create role if not exists looker_role;
grant role looker_role to role SYSADMIN;
-- Note that we are not making the looker_role a SYSADMIN,
-- but rather granting users with the SYSADMIN role to modify the looker_role
-- create a user for looker
create user if not exists looker_user
password = <enter password here>;
grant role looker_role to user looker_user;
alter user looker_user
set default_role = looker_role
default_warehouse = looker_wh;
-- change role
use role SYSADMIN;
-- create a warehouse for looker (optional)
create warehouse if not exists looker_wh
-- set the size based on your dataset
warehouse_size = medium
warehouse_type = standard
auto_suspend = 1800
auto_resume = true
initially_suspended = true;
grant all privileges
on warehouse looker_wh
to role looker_role;
-- grant read only database access (repeat for all database/schemas)
grant usage on database <database> to role looker_role;
grant usage on schema <database>.<schema> to role looker_role;
-- rerun the following any time a table is added to the schema
grant select on all tables in schema <database>.<schema> to role looker_role;
-- or
grant select on future tables in schema <database>.<schema> to role looker_role;
-- create schema for looker to write back to
use database <database>;
create schema if not exists looker_scratch;
use role ACCOUNTADMIN;
grant ownership on schema looker_scratch to role SYSADMIN revoke current grants;
grant all on schema looker_scratch to role looker_role;
如要為連線啟用自助式探索,也必須將 CREATE STAGE 授予 Looker 角色:
GRANT CREATE STAGE ON SCHEMA looker_scratch TO ROLE looker_role;
建立 Looker 與資料庫的連線
在 Looker 的「Admin」(管理) 部分,依序選取「Connections」(連線) 和「Add Connection」(新增連線)。
填寫連線詳細資料。在這些設定中,有絕大部分都是多數資料庫方言的常用設定。請參閱「將 Looker 連線至資料庫」說明文件頁面。下列設定說明包含 Snowflake 專屬附註:
資料庫設定 - 主機:輸入 Snowflake 主機名稱。看起來會像
<account_name>.snowflakecomputing.com。請參閱各區域的 Snowflake 帳戶名稱範例,確保您為部署作業使用正確的值。資料庫設定 - 驗證方式:選取下列其中一種驗證方式:
資料庫帳戶僅適用於需要時間改用多重驗證方式,且必須在 2025 年 11 月前完成轉換的現有客戶。指定 Snowflake 使用者帳戶的使用者名稱和密碼,用於連線至 Looker。
如果客戶想導入 Snowflake 的金鑰組驗證來連線至資料庫,應使用金鑰組。在「使用者名稱」欄位中,指定用來連線至 Snowflake 的使用者帳戶。在「Key Pair File」(金鑰組檔案) 欄位中,上傳已加密或未加密的 p8 格式金鑰檔案。Snowflake 的說明文件說明如何建立私密金鑰檔案。如要上傳加密的 p8 檔案,請按照下列步驟操作:
- 啟用「金鑰組已加密」切換鈕。
- 在「金鑰組檔案解密密碼」欄位中,指定 p8 檔案的密碼。
如果客戶不需要持續衍生資料表 (PDT),且想要為連線設定 OAuth,就應使用 OAuth。
選用設定 - 其他 JDBC 參數:從 Snowflake JDBC 驅動程式新增其他 JDBC 參數。如需支援的參數清單,請參閱本頁的「支援的 JDBC 參數」一節。
- 新增
warehouse=<YOUR WAREHOUSE NAME>。 此外,Looker 預設會在每個工作階段設定下列 Snowflake 參數:
TIMESTAMP_TYPE_MAPPING=TIMESTAMP_LTZJDBC_TREAT_DECIMAL_AS_INT=FALSETIMESTAMP_INPUT_FORMAT=AUTOAUTOCOMMIT=TRUE
您可以在「Additional JDBC parameters」欄位中設定替代值,覆寫上述各項參數,例如:
&AUTOCOMMIT=FALSE
- 新增
選用設定 - 啟用 PDT:使用 OAuth 驗證的 Snowflake 連線不支援 PDT。如需 PDT,請改用「金鑰組」驗證選項。
選用設定 - 啟用 PDT 覆寫:Snowflake 連線支援 PDT 覆寫,因此您可以輸入 PDT 程序專用的個別 JDBC 參數,例如主機、通訊埠、資料庫、使用者名稱、密碼、結構定義、額外參數,以及「PDT 覆寫的連線後陳述式」欄位的值。如要在 PDT 覆寫中使用金鑰組驗證,請按照下列步驟操作:
- 在「PDT 覆寫金鑰組檔案」欄位中,上傳已加密或未加密的 p8 格式金鑰檔案。Snowflake 的說明文件說明如何建立私密金鑰檔案。
- 如果您上傳的是加密的 p8 檔案,請在「PDT 覆寫密碼」欄位中指定 p8 檔案的密碼。
如要確認連線成功,請按一下「連線設定」頁面底部「狀態詳細資料」部分的「測試連線」按鈕。
如果 Looker 顯示「可連線」,請按下「連線」建立連線。
資料庫連線隨即會新增至 Looker「連線」管理頁面的清單。
依群組或使用者指定 Snowflake 倉庫
您可以透過 Looker 使用者屬性,為個別 Looker 使用者或群組指派不同的 Snowflake 資料倉儲。舉例來說,如果使用者需要不同等級的運算能力,這項功能就非常實用。您可以將運算資源較多的倉儲指派給需要的使用者,並將資源較少的倉儲指派給需求較低的使用者。
如要依群組或使用者指定倉庫,請按照下列步驟操作:
- 在 Looker 中新增群組或使用者。
在 Looker 中定義使用者屬性,用於儲存 Snowflake 倉儲名稱。你可以為這項屬性命名,例如
snowflake_wh。
在剛定義的使用者屬性中,將倉庫名稱值指派給需要不同倉庫存取權的群組或使用者。

在「Connection Settings」(連線設定) 頁面的「Additional JDBC parameters」(其他 JDBC 參數) 欄位中,新增下列內容,並將
snowflake_warehouse替換為您定義的使用者屬性名稱:warehouse={{ _user_attributes['snowflake_warehouse'] }}如要測試個別連線設定,您可以 sudo 為已指派倉庫名稱值的使用者。
管理 Snowflake 的自動暫停功能
Snowflake 倉庫預設會啟用自動暫停功能。一段時間後,倉庫會自動暫停。如果倉儲遭到停權,所有查詢都會產生錯誤。資訊主頁不會顯示這項錯誤 (通常這類錯誤會導致系統不顯示任何資料),但使用「探索」頁面查詢的使用者會看到這項錯誤。
通常有兩種方法可以管理:
Snowflake 具備自動恢復功能,可在查詢時恢復資料倉儲。不過,恢復資料倉儲最多可能需要五分鐘,因此查詢會停止回應五分鐘,然後才會傳回。您無法在 Looker 中設定自動繼續播放功能。在 Snowflake UI 的「倉庫」分頁中啟用這項功能:

如果已啟用永久衍生資料表 (PDT),Looker 的預設設定是每 5 分鐘檢查一次衍生資料表是否需要重新產生。這項檢查會讓 Snowflake 倉儲保持啟用狀態。不過,您可能希望 Snowflake 在非工作時間暫停 warehouse,以降低成本。如要這麼做,請修改 PDT 重新產生排程,詳情請參閱維護排程說明文件。
PDT 支援
使用 OAuth 的 Snowflake 連線不支援 PDT。
如要支援永久衍生資料表,請為 PDT 建立 Snowflake 使用者帳戶,該帳戶必須有權寫入資料庫和暫存結構定義,Looker 會使用這些項目建立 PDT。在 Looker 的「連線設定」頁面,開啟「永久衍生資料表 (PDT) 設定」部分下「選用設定」分頁中的「啟用 PDT」切換鈕。接著,在「Temp database」(暫存資料庫) 欄位中,輸入 Looker 用來建立 PDT 的暫存結構定義名稱。
如果是 Snowflake 連線,Looker 會將 Snowflake 的 AUTOCOMMIT 參數值設為 TRUE,也就是 Snowflake 的預設值。Looker 執行 SQL 指令來維護 PDT 註冊系統時,需要 AUTOCOMMIT。
為 Snowflake 連線設定 OAuth
Looker 支援 Snowflake 連線的 OAuth,也就是說,每位 Looker 使用者都會透過自己的 OAuth 使用者帳戶向資料庫進行驗證。
資料庫管理員可透過 OAuth 執行下列工作:
- 稽核哪些 Looker 使用者正在對資料庫執行查詢
- 使用資料庫層級權限,強制執行角色式存取控管
- 針對存取資料庫的所有程序和動作使用 OAuth 權杖,而非在多個位置嵌入資料庫 ID 和密碼
- 直接透過資料庫撤銷特定使用者的授權
使用 OAuth 的 Snowflake 連線,在 OAuth 權杖到期時,使用者必須定期重新登入。Snowflake OAuth 權杖的效期上限是透過 Snowflake 設定。
請注意下列資料庫層級 OAuth 連線事項:
- 透過 OAuth 建立的 Snowflake 連線不支援永久衍生資料表 (PDT)。
- 如果使用者的 OAuth 權杖過期,他們擁有的 Looker 排程或快訊都會受到影響。為防範這種情況,Looker 會在權杖到期前 14 天、7 天和 1 天,傳送通知電子郵件給每個排程和快訊的擁有者。使用者可以前往 Looker 使用者頁面,重新授權 Looker 存取資料庫,避免排程和快訊中斷。詳情請參閱「個人化使用者帳戶設定」說明文件頁面。
- 由於使用 OAuth 的資料庫連線是「每個使用者」專屬,快取政策也是每個使用者專屬,而不只是每個查詢專屬。也就是說,只有在同一位使用者於快取期間執行相同查詢時,Looker 才會使用快取結果。如要進一步瞭解快取,請參閱「快取查詢」說明文件頁面。
- 使用 OAuth 時,您無法在 Snowflake 使用者帳戶中切換至其他角色。如 Snowflake 說明文件所述,Snowflake 會使用 Snowflake 使用者帳戶的預設角色,除非預設角色為 ACCOUNTADMIN 或 SECURITYADMIN。由於這些角色不適用於 OAuth,Snowflake 會改用 PUBLIC 角色。詳情請參閱 Snowflake 說明文件。
- 當 Looker 管理員以其他使用者身分執行 sudo 時,管理員會使用該使用者的 OAuth 存取權杖。使用者在 Looker 中授權 OAuth 連線時,「授權 OAuth 連線」對話方塊會通知他們,管理員或開發人員等具備權限的 Looker 使用者,可能可以查看他們的資料。如果使用者的存取權杖已過期,管理員無法代表 sudoed 使用者建立新權杖。如要瞭解如何使用
sudo指令,請參閱使用者說明文件頁面。
設定 Snowflake 資料庫,以便與 Looker 搭配使用 OAuth
如要使用 OAuth 建立 Snowflake 與 Looker 的連線,請務必在 Snowflake 中設定 OAuth 整合。這需要具備 ACCOUNTADMIN 權限的 Snowflake 使用者帳戶。
在 Snowflake 中執行下列指令,其中
<looker_hostname>是 Looker 執行個體的主機名稱:CREATE SECURITY INTEGRATION LOOKER TYPE = OAUTH ENABLED = TRUE OAUTH_CLIENT = LOOKER OAUTH_REDIRECT_URI = 'https://<looker_hostname>/external_oauth/redirect';-
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('LOOKER');回應會包含
OAUTH_CLIENT_ID和OAUTH_CLIENT_SECRET,您會在後續步驟中用到這些值。 在 Looker 中,建立與 Snowflake 倉儲的新連線,如本頁「建立 Looker 與資料庫的連線」一節所述。建立新連結時,請在「驗證」欄位中選取「OAuth」選項。選取「OAuth」選項後,Looker 會顯示「OAuth 用戶端 ID」和「OAuth 用戶端密鑰」欄位。
貼上
OAUTH_CLIENT_ID和OAUTH_CLIENT_SECRET值,這些值是您在本程序稍早從資料庫取得。完成將 Looker 連線至資料庫的其餘程序。
測試 OAuth 連線
設定 Looker 與資料庫的連線後,您可以透過下列任一方式測試連線:
- 按照「將 Looker 連線至資料庫」說明文件頁面的指示,選取「連線設定」頁面底部的「測試」按鈕。
- 在「連線」管理頁面中,選取連線清單旁的「測試」按鈕,如「連線」說明文件頁面所述。
此外,您也可以按照下列步驟測試連線,並將連線部署至模型:
- 在 Looker 中進入開發模式。
- 前往 Looker 專案的專案檔案,該專案使用您的 Snowflake 連線。
- 開啟模型檔案,將模型的
connection值替換為新的 Snowflake 連線名稱,然後儲存模型檔案。 - 開啟任一模型中的探索或資訊主頁,然後執行查詢。嘗試執行查詢時,Looker 會提示您登入 Snowflake。
- 按照 Snowflake 的登入提示操作,然後輸入 Snowflake 憑證。
成功登入 Snowflake 後,Looker 會將您帶回查詢。如果查詢執行無誤,您可以提交新的連線值,並將變更部署至正式環境。
登入 Snowflake 執行查詢
為 Snowflake 連線設定 OAuth 後,系統會提示使用者先登入 Snowflake,再執行查詢。包括來自「探索」、資訊主頁、Look 和 SQL Runner 的查詢。

使用者也可以在「帳戶」頁面的「OAuth 連線憑證」部分登入 Snowflake。
如要使用 Looker 登入 Snowflake 帳戶,請按照下列步驟操作:

- 按一下 Looker 使用者選單。
- 選取「帳戶」。
- 在「Account」(帳戶) 頁面中,前往「OAuth Connection Credentials」(OAuth 連線憑證) 部分,然後選取適當 Snowflake 資料庫的「Log In」(登入) 按鈕。
選取「登入」後,Looker 會顯示「授權 OAuth 連線」對話方塊,通知您授權連線後,Looker 執行個體就能代表您存取資料,且管理員或開發人員等具備權限的 Looker 使用者,可能可以查看您的資料。選取「授權」,繼續前往 Snowflake 登入對話方塊。(Looker 會將這項同意聲明儲存在瀏覽器的本機儲存空間中;如果您清除本機儲存空間,下次啟動 OAuth 授權流程時,系統會再次顯示對話方塊)。輸入 Snowflake 憑證並選取「登入」,然後選取「允許」,授予 Looker 存取 Snowflake 帳戶的權限。
透過 Looker 登入 Snowflake 後,您隨時可以透過「帳戶」頁面登出或重新授權憑證,詳情請參閱「個人化使用者帳戶」說明文件頁面。
支援的 JDBC 參數
如果是 Snowflake,Looker 支援在連線的「Additional JDBC parameters」欄位中使用下列 JDBC 參數。如要瞭解這些參數,請參閱資料庫的說明文件。
accountallowUnderscoresInHostapplicationauthenticatorAUTOCOMMITCLEAR_BATCH_ONLY_AFTER_SUCCESSFUL_EXECUTIONCLIENT_SESSION_KEEP_ALIVEdbdisableGcsDefaultCredentialsdisableOCSPChecksdisableSamlURLCheckdisableSocksProxyENABLE_WILDCARDS_IN_SHOW_METADATA_COMMANDSenablePatternSearchHTTP_CLIENT_CONNECTION_TIMEOUTHTTP_CLIENT_SOCKET_TIMEOUTIMPLICIT_SERVER_SIDE_QUERY_TIMEOUTinsecureModeJDBC_DEFAULT_FORMAT_DATE_WITH_TIMEZONEJDBC_GET_DATE_USE_NULL_TIMEZONEjdbc_use_session_timezoneJDBC_TREAT_DECIMAL_AS_INTloginTimeoutMAX_TLS_VERSIONmaxHttpRetriesMIN_TLS_VERSIONMULTI_STATEMENT_COUNTnetworkTimeoutnonProxyHosts:如果是公開 Looker 執行個體,nonProxyHosts參數的值必須是執行個體的公開 IP 位址。oauthAuthorizationUrl:如果是公開 Looker 執行個體,oauthAuthorizationUrl參數的值必須是執行個體的公開 IP 位址。oauthClientIdoauthClientSecretoauthScopeoauthTokenRequestUrl:如果是公開 Looker 執行個體,oauthTokenRequestUrl參數的值必須是執行個體的公開 IP 位址。ocspFailOpenOWNER_ONLY_STAGE_FILE_PERMISSIONS_ENABLEDpasscodepasscodeInPasswordpasswordprivate_keyprivate_key_base64private_key_pwdprivatekeyproxyHost:如果是公開 Looker 執行個體,proxyHost參數的值必須是執行個體的公開 IP 位址。proxyPasswordproxyPortproxyProtocolproxyUserQUERY_TAGqueryTimeoutQUOTED_IDENTIFIERS_IGNORE_CASEROLEschemaSTATEMENT_QUEUED_TIMEOUT_IN_SECONDSSTATEMENT_TIMEOUT_IN_SECONDSstringsQuotedForColumnDefTIMESTAMP_INPUT_FORMATTIMESTAMP_TYPE_MAPPINGTIMEZONEtokentracinguseProxyuserwarehouseWEEK_OF_YEAR_POLICYWEEK_STARTworkloadIdentityProvider
功能支援
如要讓 Looker 支援某些功能,資料庫方言也必須支援這些功能。
自 Looker 26.20 起,Snowflake 支援下列功能:
| 功能 | 是否支援? |
|---|---|
| Looker (Google Cloud Core) | |
| 對稱式匯總函式 | |
| 衍生資料表 | |
| 永久 SQL 衍生資料表 | |
| 永久原生衍生資料表 | |
| 穩定檢視畫面 | |
| 終止查詢 | |
| 以 SQL 為基礎的樞紐 | |
| 時區 | |
| SSL | |
| 小計 | |
| JDBC 其他參數 | |
| 區分大小寫 | |
| 位置類型 | |
| 名單類型 | |
| 百分位數 | |
| 不重複值的百分位數 | |
| SQL Runner 顯示程序 | |
| SQL Runner 說明資料表 | |
| SQL Runner 顯示索引 | |
| SQL Runner Select 10 | |
| SQL Runner 計數 | |
| SQL Explain | |
| OAuth 2.0 憑證 | |
| 內容留言 | |
| 連線集區 | |
| HLL 草圖 | |
| 匯總感知 | |
| 增量 PDT | |
| 毫秒 | |
| 微秒 | |
| materialized view | |
| 期間比較指標 | |
| 近似不重複值的計數 | |
| 資料庫內分析模型 | |
| 自訂日曆 |
後續步驟
將資料庫連線至 Looker 後,請為使用者設定登入選項。