Snowflake

如需将 Looker 连接到 Snowflake,请按以下步骤操作:

  1. 在 Snowflake 上创建 Looker 用户并配置访问权限。
  2. 在 Looker 中设置数据库连接

加密网络流量

对 Looker 应用与数据库之间的网络流量进行加密是一种最佳实践。可以考虑启用安全的数据库访问文档页面上介绍的某个选项。

在 Snowflake 上创建 Looker 用户

我们建议使用以下命令创建 Looker 用户。请务必单独运行每一行,或在 Snowflake 连接面板中选择 All Queries (所有查询)选项,以确保运行所有行(默认情况下,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 角色授予 CREATE STAGE

GRANT CREATE STAGE ON SCHEMA looker_scratch TO ROLE looker_role;

创建 Looker 与数据库的连接

在 Looker 的 Admin (管理)部分中,选择 Connections (连接),然后点击 Add Connection (添加连接)。

填写连接详情。这些设置中的大多数设置对于大多数数据库方言都是通用的。如需了解相关信息,请参阅将 Looker 连接到数据库文档页面。以下设置说明包含特定于 Snowflake 的备注:

  • Database Settings - Host(数据库设置 - 主机):输入 Snowflake 主机名。它看起来类似于 <account_name>.snowflakecomputing.com。按区域查看 Snowflake 账号名称示例,确保为部署使用正确的值。

  • Database Settings - Authentication Method(数据库设置 - 身份验证方法):选择以下身份验证方法之一:

    • Database Account(数据库账号)仅供需要在 Snowflake 2025 年 11 月截止日期之前过渡到多重身份验证方法的现有客户使用。指定将用于连接到 Looker 的 Snowflake 用户账号的用户名密码

    • Key Pair(密钥对)供希望实现 Snowflake 的密钥对身份验证以连接到其数据库的客户使用。在用户名 字段中指定将用于连接到 Snowflake 的用户账号。在密钥对文件 字段中上传加密或未加密的 p8 格式密钥文件。Snowflake 的文档介绍了如何创建私钥文件。如果您要上传加密的 p8 文件,请执行以下操作:

      • 启用 Key Pair is Encrypted (密钥对已加密)切换开关。
      • 密钥对文件解密密码 字段中指定 p8 文件的密码。
    • OAuth 供不需要 永久性派生表 (PDT) 且希望 为连接配置 OAuth 的客户使用。

  • Optional Settings - Additional JDBC parameters(可选设置 - 其他 JDBC 参数):从 Snowflake JDBC driver 添加其他 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

  • Optional Settings - Enable PDTs(可选设置 - 启用 PDT):使用 OAuth 身份验证的 Snowflake 连接不支持 PDT。如果需要 PDT,请改用密钥对 身份验证选项。

  • 可选设置 - 启用 PDT 覆盖设置PDT 覆盖设置支持 Snowflake 连接,因此您可以输入单独的专用于 PDT 进程的 JDBC 参数,例如主机、端口、数据库、用户名、密码、架构、其他参数以及连接后语句的 PDT 覆盖设置字段的值。您可以通过以下方式在 PDT 覆盖设置中使用 密钥对身份验证

    • 密钥对文件的 PDT 覆盖设置 字段中上传加密或未加密的 p8 格式密钥文件。Snowflake 的文档介绍了如何创建私钥文件
    • 如果您要上传加密的 p8 文件,请在密码的 PDT 覆盖设置 字段中指定 p8 文件的密码。

如需验证连接是否成功,请点击 Test (测试)。如需了解问题排查信息,请参阅测试数据库连接文档页面。

如需保存这些设置,请点击 Connect (连接)。

按群组或用户指定 Snowflake 仓库

您可以使用 Looker 用户属性为各个 Looker 用户或群组分配单独的 Snowflake 仓库。例如,如果某些用户需要不同级别的计算能力,此功能就非常有用。您可以仅向需要更多计算资源的用户分配具有更多计算资源的仓库,同时向需求较少的用户分配具有较少资源的仓库。

如需按群组或用户指定仓库,请按以下步骤操作:

  1. 在 Looker 中添加 群组用户
  2. 在 Looker 中定义 用户属性,Snowflake 仓库名称将存储在该属性中。您可以为该属性指定任何名称,例如 snowflake_wh

    Looker 中的“用户属性”页面,显示了 Snowflake 仓库用户属性。

  3. 在您刚刚定义的用户属性中,为需要不同仓库访问权限的群组用户分配仓库名称值。

    Looker 中的“用户属性”页面,显示了已为群组分配值的 Snowflake 数据仓库用户属性。

  4. 连接设置 页面上的其他 JDBC 参数 字段中,添加以下内容,并将 snowflake_warehouse 替换为您定义的用户属性的名称:

      warehouse={{ _user_attributes['snowflake_warehouse'] }}
    
  5. 如需测试各个连接设置,您可以sudo

管理 Snowflake 的自动暂停功能

Snowflake 仓库具有自动暂停功能,该功能默认处于启用状态。经过指定的时间段后,仓库将自动暂停。如果仓库已暂停,所有查询都会生成错误。此错误不会显示在信息中心内(通常,这些错误会导致不显示任何数据),但对于使用“探索”页面进行查询的任何用户,此错误都会显示。

通常使用两种方法来管理此功能:

  1. Snowflake 具有自动恢复功能,该功能会在查询仓库时恢复仓库。不过,恢复仓库最多可能需要 5 分钟,导致查询在返回之前停止响应 5 分钟。无法在 Looker 中配置自动恢复。在 Snowflake 界面中的 Warehouses (仓库)标签页中启用此功能:

    Snowflake 界面中的“仓库”标签页,其中显示了“自动挂起”和“自动恢复”复选框。

  2. 如果已启用永久性派生表 (PDT),Looker 的默认设置是每 5 分钟检查一次派生表重新生成。此检查将使 Snowflake 仓库保持活跃状态。不过,您可能希望 Snowflake 在非工作时间暂停仓库,以降低费用。如需实现此目的,您可以修改 PDT 重新生成时间表,如维护时间表文档中所述。

PDT 支持

使用 OAuth 的 Snowflake 连接不支持 PDT

如需支持永久性派生表,请为 PDT 创建一个 Snowflake 用户账号,该账号对您的数据库和 Looker 将用于创建 PDT 的临时架构具有写入权限。在 Looker 连接设置 页面上,在 Persistent Derived Table (PDT) Settings (永久性派生表 (PDT) 设置)部分下的 Optional Settings (可选设置)标签页中,启用 Enable PDTs (启用 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 访问令牌。如果用户的访问令牌已过期,管理员无法代表 sudo 用户创建新令牌。如需了解如何使用 sudo 命令,请参阅 用户 文档页面。

为 Looker 配置 OAuth 的 Snowflake 数据库

如需使用 OAuth 创建与 Looker 的 Snowflake 连接,您必须在 Snowflake 中设置 OAuth 集成。这需要具有 ACCOUNTADMIN 权限的 Snowflake 用户账号。

  1. 在 Snowflake 中运行以下命令,其中 <looker_hostname> 是 Looker 实例的主机名:

    CREATE SECURITY INTEGRATION LOOKER
      TYPE = OAUTH
      ENABLED = TRUE
      OAUTH_CLIENT = LOOKER
      OAUTH_REDIRECT_URI = 'https://<looker_hostname>/external_oauth/redirect';
    
  2. 运行以下命令,获取 OAuth 客户端 ID 和密钥:

    SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('LOOKER');
    

    响应将包含 OAUTH_CLIENT_IDOAUTH_CLIENT_SECRET,您将在本过程的后续步骤中需要用到它们。

  3. 在 Looker 中,创建与 Snowflake 仓库的新连接,如本页面的 创建 Looker 与数据库的连接 部分中所述。创建新连接时,在身份验证 字段中选择 OAuth 选项。选择 OAuth 选项后,Looker 会显示 OAuth Client ID (OAuth 客户端 ID)和 OAuth Client Secret (OAuth 客户端密钥)字段。

  4. 粘贴您在本过程前面从数据库中获取的 OAUTH_CLIENT_IDOAUTH_CLIENT_SECRET 值。

  5. 完成将 Looker 连接到数据库的其余过程。

测试 OAuth 连接

配置 Looker 与数据库的连接后,您可以通过执行以下任一操作来测试连接本身:

  • 选择 Connections Settings (连接设置)页面底部的 Test (测试)按钮,如将 Looker 连接到数据库文档页面中所述。
  • 选择 Connections (连接)“管理”页面上连接列表旁边的 Test (测试)按钮,如 Connections 文档页面中所述。

此外,您还可以按照以下步骤测试连接并将其部署到模型中:

  1. 在 Looker 中,进入开发模式
  2. 前往项目文件,以找到使用 Snowflake 连接的 Looker 项目。
  3. 打开 模型文件,将模型的 connection 值替换为新的 Snowflake 连接的名称,然后保存模型文件。
  4. 打开模型的探索或信息中心之一,然后运行查询。当您尝试运行查询时,Looker 会提示您登录 Snowflake
  5. 按照 Snowflake 的登录提示操作,然后输入您的 Snowflake 凭据。

成功登录 Snowflake 后,Looker 会将您返回到查询。如果查询运行正确,您可以提交新的连接值并将更改部署到生产环境

登录 Snowflake 以运行查询

为 Snowflake 连接设置 OAuth 后,系统会提示用户先登录 Snowflake,然后再运行查询。这包括来自探索、信息中心、Look 和 SQL Runner 的查询。

Looker 界面,显示 OAuth 登录提示。

用户还可以从其账号 页面上的 OAuth Connection Credentials (OAuth 连接凭据)部分登录 Snowflake。

如需使用 Looker 登录 Snowflake 账号,请按以下步骤操作:

Looker 中的“账号”页面,其中显示了“OAuth 连接凭据”部分。

  1. 点击 Looker 用户菜单。
  2. 选择账号
  3. 账号 页面中,前往 OAuth Connection Credentials (OAuth 连接凭据)部分,然后为相应的 Snowflake 数据库选择 Log In (登录)按钮。

选择 Log In (登录)后,系统会显示 Snowflake 登录对话框。输入您的 Snowflake 凭据并选择 Log In(登录),然后选择 Allow(允许)以授予 Looker 访问您的 Snowflake 账号的权限。

通过 Looker 登录 Snowflake 后,您可以随时通过 账号 页面退出账号或重新授权凭据,如 个性化用户账号 文档页面中所述。

支持的 JDBC 参数

对于 Snowflake,Looker 支持连接的 其他 JDBC 参数 字段中的以下 JDBC 参数。如需了解这些参数的相关信息,请参阅数据库的相关文档。

  • account
  • allowUnderscoresInHost
  • application
  • authenticator
  • AUTOCOMMIT
  • CLEAR_BATCH_ONLY_AFTER_SUCCESSFUL_EXECUTION
  • CLIENT_SESSION_KEEP_ALIVE
  • db
  • disableGcsDefaultCredentials
  • disableOCSPChecks
  • disableSamlURLCheck
  • disableSocksProxy
  • ENABLE_WILDCARDS_IN_SHOW_METADATA_COMMANDS
  • enablePatternSearch
  • HTTP_CLIENT_CONNECTION_TIMEOUT
  • HTTP_CLIENT_SOCKET_TIMEOUT
  • IMPLICIT_SERVER_SIDE_QUERY_TIMEOUT
  • insecureMode
  • JDBC_DEFAULT_FORMAT_DATE_WITH_TIMEZONE
  • JDBC_GET_DATE_USE_NULL_TIMEZONE
  • jdbc_use_session_timezone
  • JDBC_TREAT_DECIMAL_AS_INT
  • loginTimeout
  • MAX_TLS_VERSION
  • maxHttpRetries
  • MIN_TLS_VERSION
  • MULTI_STATEMENT_COUNT
  • networkTimeout
  • nonProxyHosts
  • oauthAuthorizationUrl
  • oauthClientId
  • oauthClientSecret
  • oauthScope
  • oauthTokenRequestUrl
  • ocspFailOpen
  • OWNER_ONLY_STAGE_FILE_PERMISSIONS_ENABLED
  • passcode
  • passcodeInPassword
  • password
  • private_key
  • private_key_base64
  • private_key_pwd
  • privatekey
  • proxyHost
  • proxyPassword
  • proxyPort
  • proxyProtocol
  • proxyUser
  • QUERY_TAG
  • queryTimeout
  • QUOTED_IDENTIFIERS_IGNORE_CASE
  • ROLE
  • schema
  • STATEMENT_QUEUED_TIMEOUT_IN_SECONDS
  • STATEMENT_TIMEOUT_IN_SECONDS
  • stringsQuotedForColumnDef
  • TIMESTAMP_INPUT_FORMAT
  • TIMESTAMP_TYPE_MAPPING
  • TIMEZONE
  • token
  • tracing
  • useProxy
  • user
  • warehouse
  • WEEK_OF_YEAR_POLICY
  • WEEK_START
  • workloadIdentityProvider

功能支持

如需让 Looker 支持某些功能,您的数据库方言也必须支持这些功能。

截至 Looker 26.8,Snowflake 支持以下功能:

功能 是否支持?
Looker (Google Cloud Core)
对称聚合
派生表
基于 SQL 的永久性派生表
原生永久性派生表
稳定视图
终止查询
基于 SQL 的透视
时区
SSL
小计
其他 JDBC 参数
区分大小写
位置类型
名单类型
百分位
不同值百分位
SQL Runner “Show Processes”
SQL Runner “Describe Table”
SQL Runner “Show Indexes”
SQL Runner “Select 10”
SQL Runner “Count”
SQL “Explain”
OAuth 2.0 凭证
上下文注释
连接池
HLL 草图
汇总感知
递增 PDT
毫秒
微秒
具体化视图
与前一时间段相比的指标
近似计数不同
数据库内分析模型
自定义日历

后续步骤

将数据库连接到 Looker 后,请为用户配置登录选项