如需将 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 账号名称示例,确保您为部署使用了正确的值。
数据库设置 - 身份验证方法:选择以下身份验证方法之一:
数据库账号仅供需要在 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
您可以在其他 JDBC 参数字段中设置替代值来覆盖这些参数,例如:
&AUTOCOMMIT=FALSE
如需验证连接是否成功,请点击测试。如需了解问题排查信息,请参阅测试数据库连接文档页面。
如需保存这些设置,请点击连接。
按群组或用户指定 Snowflake 数据仓库
您可以使用 Looker 用户属性为各个 Looker 用户或群组分配单独的 Snowflake 数据仓库。例如,如果您的用户需要不同级别的计算能力,那么此功能就非常有用。您可以仅为需要更多计算资源的用户分配计算资源更多的仓库,同时为需求较少的用户分配资源较少的仓库。
如需按群组或按用户指定仓库,请按以下步骤操作:
- 在 Looker 中添加群组或用户。
在 Looker 中定义一个用于存储 Snowflake 仓库名称的用户属性。您可以为此属性指定任何名称,例如
snowflake_wh
。在您刚刚定义的用户属性中,为需要不同仓库访问权限的群组或用户分配仓库名称值。
在连接设置页面上的其他 JDBC 参数字段中,添加以下内容,并将
snowflake_warehouse
替换为您定义的用户属性的名称:warehouse={{ _user_attributes['snowflake_warehouse'] }}
如需测试各个连接设置,您可以以分配了数据仓库名称值的用户身份运行 sudo。
管理 Snowflake 的自动暂停功能
Snowflake 仓库具有自动暂停功能,该功能默认处于启用状态。在指定时间段后,仓库将自动暂停。如果数据仓库处于暂停状态,所有查询都会产生错误。此错误不会显示在信息中心内(通常,这些错误会导致不显示任何数据),但会显示在通过“探索”页面进行查询的任何用户面前。
通常使用以下两种方法来管理此问题:
Snowflake 具有自动恢复功能,可在仓库被查询时恢复仓库。不过,恢复数据仓库最多可能需要 5 分钟,导致查询在返回之前停止响应 5 分钟。无法在 Looker 中配置自动恢复。在 Snowflake 界面中的 Warehouses 标签页上启用此功能:
如果已启用永久性派生表 (PDT),Looker 的默认设置是每 5 分钟检查一次派生表是否需要重新生成。此检查将使 Snowflake 数据仓库保持活跃状态。不过,您可能希望 Snowflake 在非工作时间暂停数据仓库,以降低费用。为此,您可以修改 PDT 再生时间表,具体方法请参阅维护时间表文档。
PDT 支持
使用 OAuth 的 Snowflake 连接不支持 PDT。
如需支持持久性派生表,请为 PDT 创建一个 Snowflake 用户账号,该账号对您的数据库和 Looker 将用于创建 PDT 的临时架构具有写入权限。在 Looker 的连接设置页面上,在永久性派生表 (PDT) 设置部分下的可选设置标签页中,开启启用 PDT 开关。然后,在临时数据库字段中,输入 Looker 将用于创建 PDT 的临时架构的名称。
请注意,PDT 替换不适用于使用密钥对身份验证的 Snowflake 连接。
对于 Snowflake 连接,Looker 会将 Snowflake 的 AUTOCOMMIT
参数的值设置为 TRUE
,这是 Snowflake 的默认值。Looker 运行 SQL 命令来维护其 PDT 注册系统,因此需要 AUTOCOMMIT
。
为 Snowflake 连接配置 OAuth
Looker 支持通过 OAuth 连接到 Snowflake,这意味着每位 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 访问令牌。如果用户的访问令牌已过期,管理员无法代表 sudo 用户创建新令牌。如需了解如何使用
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 以运行查询
为 Snowflake 连接设置 OAuth 后,系统会在用户运行查询之前提示其登录 Snowflake。这包括来自探索、信息中心、Look 和 SQL Runner 的查询。
用户还可以通过其账号页面上的 OAuth 连接凭据部分登录 Snowflake。
如需使用 Looker 登录 Snowflake 账号,请按以下步骤操作:
- 点击 Looker 用户菜单。
- 选择账号。
- 在账号页面中,前往 OAuth 连接凭据部分,然后为相应的 Snowflake 数据库选择登录按钮。
选择登录后,系统会显示 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 Explain | 是 |
OAuth 2.0 凭据 | 是 |
上下文注释 | 是 |
连接池 | 是 |
HLL 草图 | 是 |
汇总认知度 | 是 |
增量 PDT | 是 |
毫秒 | 是 |
微秒 | 是 |
具体化视图 | 否 |
与前一时间段相比的指标 | 是 |
近似计数不同 | 否 |
后续步骤
将数据库连接到 Looker 后,请为用户配置登录选项。