如要將 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;
建立 Looker 資料庫連線
在 Looker 的「管理」部分中,選取「連線」,然後按一下「新增連線」。
填寫連線詳細資料。在這些設定中,有絕大部分都是多數資料庫方言的常用設定。詳情請參閱「將 Looker 連線至資料庫」說明文件頁面。以下設定說明包含 Snowflake 專用的附註:
資料庫設定 - 主機:輸入 Snowflake 主機名稱。看起來會像 <account_name>.snowflakecomputing.com
。請參閱各區域的 Snowflake 帳戶名稱範例,確保您為部署作業使用正確的值。
資料庫設定 - 驗證方法:選取下列其中一種驗證方法:
資料庫帳戶僅適用於需要時間改用多重驗證方法的現有客戶,且必須在 2025 年 11 月前完成。指定用於連線至 Looker 的 Snowflake 使用者帳戶使用者名稱和密碼。
如果客戶想實作 Snowflake 的金鑰組驗證,以便連線至資料庫,就應使用金鑰組。在「使用者名稱」欄位中,指定要用來連線至 Snowflake 的使用者帳戶。在「金鑰組檔案」欄位中,上傳未加密的 p8 格式金鑰檔案;系統不支援加密金鑰檔案。如要瞭解如何建立私密金鑰檔案,請參閱 Snowflake 的說明文件。
如果客戶不需要持續性衍生資料表 (PDT),且想為連線設定 OAuth,就應使用 OAuth。
選用設定 - 啟用 PDT:使用 OAuth 驗證的 Snowflake 連線不支援 PDT。如果需要 PDT,請改用「金鑰配對」驗證選項。
選用設定 - 其他 JDBC 參數:從 Snowflake JDBC 驅動程式新增其他 JDBC 參數。
- 新增
warehouse=<YOUR WAREHOUSE NAME>
。 此外,根據預設,Looker 會在每個工作階段中設定下列 Snowflake 參數:
TIMESTAMP_TYPE_MAPPING=TIMESTAMP_LTZ
JDBC_TREAT_DECIMAL_AS_INT=FALSE
TIMESTAMP_INPUT_FORMAT=AUTO
AUTOCOMMIT=TRUE
您可以在「Additional JDBC parameters」(額外 JDBC 參數) 欄位中設定替代值,藉此覆寫每個參數,例如:
&AUTOCOMMIT=FALSE
如要確認連線是否成功,請按一下「測試」。如需疑難排解資訊,請參閱「測試資料庫連線」說明文件頁面。
如要儲存這些設定,請按一下「連線」。
依據群組或使用者指定 Snowflake 倉庫
您可以使用 Looker 使用者屬性,為個別 Looker 使用者或群組指派不同的 Snowflake 資料倉儲。舉例來說,如果使用者需要不同等級的運算能力,這項功能就非常實用。您可以為需要更多運算資源的使用者指派這類倉儲,並為需求較少的使用者指派資源較少的倉儲。
如要依群組或使用者指定倉庫,請按照下列步驟操作:
- 在 Looker 中新增群組或使用者。
在 Looker 中定義使用者屬性,用於儲存 Snowflake 倉庫名稱。你可以為這項屬性命名,例如
snowflake_wh
。在您剛定義的使用者屬性中,將倉庫名稱值指派給需要不同倉庫存取權的群組或使用者。
在「連線設定」頁面的「其他 JDBC 參數」欄位中,新增下列內容,並將
snowflake_warehouse
替換為您定義的使用者屬性名稱:warehouse={{ _user_attributes['snowflake_warehouse'] }}
如要測試個別連線設定,您可以sudo指派倉庫名稱值的使用者。
管理 Snowflake 的自動暫停功能
Snowflake 倉庫預設會啟用自動暫停功能。一段時間後,倉庫會自動暫停。如果倉庫遭到停權,所有查詢都會產生錯誤。這項錯誤不會顯示在資訊主頁上 (通常這些錯誤會導致系統不顯示任何資料),但會顯示在透過「探索」頁面查詢的任何使用者面前。
通常會使用下列兩種方法管理這項設定:
Snowflake 具有自動繼續功能,可在查詢時繼續執行倉庫。不過,恢復倉庫最多可能需要五分鐘,因此查詢作業會停止回應五分鐘,然後才會傳回結果。您無法在 Looker 中設定自動繼續播放功能。在 Snowflake UI 的「倉庫」分頁中啟用這項功能:
如果已啟用持續衍生資料表 (PDT),Looker 的預設設定是每 5 分鐘檢查一次衍生資料表是否需要重新產生。這項檢查會讓 Snowflake 倉庫保持啟用狀態。不過,您可能會希望 Snowflake 在非工作時間暫停倉庫,以降低成本。如要達成這個目標,請按照維護時間表說明文件所述,修改 PDT 重新產生時間表。
支援 PDT
使用 OAuth 的 Snowflake 連線不支援 PDT。
如要支援永久衍生資料表,請為 PDT 建立 Snowflake 使用者帳戶,該帳戶必須具備資料庫的寫入權限,以及 Looker 用於建立 PDT 的暫存結構定義。在 Looker 的「連線設定」頁面中,開啟「永久衍生資料表 (PDT) 設定」部分下「選用設定」分頁中的「啟用 PDT」切換鈕。接著,在「暫存資料庫」欄位中,輸入 Looker 用來建立 PDT 的暫存結構定義名稱。
請注意,使用金鑰組驗證的 Snowflake 連線不支援PDT 覆寫。
如果是 Snowflake 連線,Looker 會將 Snowflake 的 AUTOCOMMIT
參數值設為 TRUE
,這是 Snowflake 的預設值。Looker 執行 SQL 指令來維護 PDT 註冊系統時,需要 AUTOCOMMIT
。
設定 Snowflake 連線的 OAuth
Looker 支援 Snowflake 連線的 OAuth,也就是說,每位 Looker 使用者都會透過自己的 OAuth 使用者帳戶向資料庫進行驗證。
資料庫管理員可透過 OAuth 執行下列工作:
- 稽核哪些 Looker 使用者對資料庫執行查詢
- 使用資料庫層級權限,強制執行角色型存取權控管
- 針對存取資料庫的所有程序和動作使用 OAuth 權杖,而不是在多個位置嵌入資料庫 ID 和密碼
- 直接透過資料庫撤銷特定使用者的授權
如果 Snowflake 連線使用 OAuth,使用者必須在 OAuth 權杖到期時重新登入。Snowflake OAuth 權杖的最高有效期限由 Snowflake 本身設定。
請注意資料庫層級 OAuth 連線的下列事項:
- 使用 OAuth 的 Snowflake 連線不支援永久衍生資料表 (PDT)。
- 如果使用者的 OAuth 權杖過期,他們擁有的任何 Looker 排程或快訊都會受到影響。為防範這種情況,Looker 會在權杖到期前 14 天、7 天和 1 天,傳送通知電子郵件給每個排程和快訊的擁有者。使用者可以前往 Looker 使用者頁面,重新授權 Looker 存取資料庫,避免排程和快訊中斷。詳情請參閱「個人化使用者帳戶設定」說明文件頁面。
- 由於使用 OAuth 的資料庫連線是「每個使用者」專屬,因此快取政策也是每個使用者專屬,而不只是每個查詢專屬。也就是說,只有在快取期間內同一位使用者執行相同查詢時,Looker 才會使用快取結果。如要進一步瞭解快取,請參閱「快取查詢」說明文件頁面。
- 使用 OAuth 時,您無法在 Snowflake 使用者帳戶中切換至其他角色。如 Snowflake 說明文件所述,除非預設角色為 ACCOUNTADMIN 或 SECURITYADMIN,否則 Snowflake 會使用 Snowflake 使用者帳戶的預設角色。由於這些角色已遭 OAuth 封鎖,Snowflake 會改用 PUBLIC 角色。詳情請參閱 Snowflake 說明文件。
- 當 Looker 管理員以其他使用者身分執行 sudo 時,管理員會使用該使用者的 OAuth 存取權杖。如果使用者的存取權杖已過期,管理員就無法代表該使用者建立新權杖。如要瞭解如何使用
sudo
指令,請參閱「使用者」文件頁面。
為 Looker 設定 Snowflake 資料庫的 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 中,按照本頁「建立 Looker 與資料庫的連線」一節所述,建立與 Snowflake 倉庫的新連線。建立新連結時,請在「驗證」欄位中選取「OAuth」選項。選取「OAuth」選項後,Looker 會顯示「OAuth 用戶端 ID」和「OAuth 用戶端密鑰」欄位。
貼上您在本程序稍早從資料庫取得的
OAUTH_CLIENT_ID
和OAUTH_CLIENT_SECRET
值。完成將 Looker 連線至資料庫的其餘程序。
測試 OAuth 連線
設定 Looker 與資料庫的連線後,您可以透過下列任一方式測試連線:
- 如「將 Looker 連線至資料庫」說明文件頁面所述,選取「連線設定」頁面底部的「測試」按鈕。
- 在「連線」管理頁面中,選取連線清單旁的「測試」按鈕,如「連線」說明文件頁面所述。
此外,您也可以按照下列步驟測試連線,並將連線部署至模型:
- 在 Looker 中進入開發模式。
- 前往使用 Snowflake 連線的 Looker 專案檔案。
- 開啟模型檔案,將模型的
connection
值替換為新的 Snowflake 連線名稱,然後儲存模型檔案。 - 開啟任一模型中的探索或資訊主頁,然後執行查詢。嘗試執行查詢時,Looker 會提示您登入 Snowflake。
- 按照 Snowflake 的登入提示操作,然後輸入 Snowflake 憑證。
成功登入 Snowflake 後,Looker 會將您帶回查詢。如果查詢執行無誤,您可以提交新的連線值,並將變更部署至正式環境。
登入 Snowflake 執行查詢
為 OAuth 設定 Snowflake 連線後,系統會提示使用者登入 Snowflake,才能執行查詢。包括來自「探索」、「資訊主頁」、「Look」和「SQL Runner」的查詢。
使用者也可以在「帳戶」頁面的「OAuth 連線憑證」部分登入 Snowflake。
如要使用 Looker 登入 Snowflake 帳戶,請按照下列步驟操作:
- 按一下 Looker 使用者選單。
- 選取「帳戶」。
- 在「帳戶」頁面中,前往「OAuth 連線憑證」部分,然後選取適當 Snowflake 資料庫的「登入」按鈕。
選取「Log In」會顯示 Snowflake 登入對話方塊。輸入 Snowflake 憑證並選取「登入」,然後選取「允許」,授予 Looker 存取 Snowflake 帳戶的權限。
透過 Looker 登入 Snowflake 後,您隨時可以透過「帳戶」頁面登出或重新授權憑證,詳情請參閱「個人化使用者帳戶」說明文件頁面。
功能支援
如要讓 Looker 支援某些功能,資料庫方言也必須支援這些功能。
自 Looker 25.10 起,Snowflake 支援下列功能:
功能 | 是否支援? |
---|---|
支援級別 | 支援 |
Looker (Google Cloud Core) | 是 |
對稱式匯總函式 | 是 |
衍生資料表 | 是 |
永久 SQL 衍生資料表 | 是 |
永久原生衍生資料表 | 是 |
穩定版檢視畫面 | 是 |
終止查詢 | 是 |
以 SQL 為基礎的樞紐 | 是 |
時區 | 是 |
SSL | 是 |
小計 | 是 |
JDBC 其他參數 | 是 |
區分大小寫 | 是 |
位置類型 | 是 |
名單類型 | 是 |
百分位數 | 是 |
不重複值的百分位數 | 否 |
SQL Runner 顯示程序 | 否 |
SQL Runner 說明資料表 | 是 |
SQL Runner 顯示索引 | 否 |
SQL Runner 選取 10 | 是 |
SQL Runner 計數 | 是 |
SQL 說明 | 是 |
OAuth 2.0 憑證 | 是 |
背景資訊註解 | 是 |
連線集區 | 是 |
HLL 草圖 | 是 |
匯總知名度 | 是 |
增量 PDT | 是 |
毫秒 | 是 |
微秒 | 是 |
具體化檢視表 | 否 |
與前一段時期相比的指標 | 是 |
不重複值的概略計數 | 否 |
後續步驟
將資料庫連線至 Looker 後,請為使用者設定登入選項。