如需将 Looker 连接到 Snowflake,请按以下步骤操作:
- 在 Snowflake 上创建 Looker 用户并配置访问权限。
- 在 Looker 中设置数据库连接。
加密网络流量
最佳做法是对 Looker 应用与数据库之间的网络流量进行加密。不妨考虑启用安全的数据库访问文档页面上介绍的选项之一。
在 Snowflake 上创建 Looker 用户
我们建议使用以下命令创建 Looker 用户。请务必单独运行每一行,或在 Snowflake 连接面板中选择所有查询选项,以确保运行所有行(默认情况下,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 界面中的仓库标签页上启用以下功能:
如果已启用永久性派生表 (PDT),Looker 的默认设置是每 5 分钟检查一次派生表是否需要重新生成。此检查将使 Snowflake 数据仓库保持活跃状态。不过,您可能希望 Snowflake 在非工作时间暂停数据仓库,以降低费用。为此,您可以修改 PDT 再生时间表,具体方法请参阅维护时间表文档。
PDT 支持
使用 OAuth 的 Snowflake 连接不支持 PDT。
如需支持持久性派生表,请为 PDT 创建一个 Snowflake 用户账号,该账号对您的数据库和 Looker 将用于创建 PDT 的临时架构具有写入权限。在 Looker 的连接设置页面上,在永久性派生表 (PDT) 设置部分下的可选设置标签页中,开启启用 PDT 开关。然后,在临时数据库字段中,输入 Looker 将用于创建 PDT 的临时架构的名称。
对于 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.16,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 后,请为用户配置登录选项。