将 Looker 连接到数据库

保护配置数据库后,您就可以将数据库连接到 Looker 了。

创建新的数据库连接

Admin 面板的 Database 部分中选择 Connections。在 Connections 页面上,点击 Add Connection 按钮。Looker 会显示连接设置页面。连接设置页面中显示的字段取决于您的方言设置。

有关将用户属性应用于连接设置的详情,请参阅用户属性文档页面的连接部分。

如需详细了解如何使用 PDT 替换列为 PDT 流程配置单独的登录凭据,请参阅为 PDT 流程配置单独的登录凭据部分。

例如,在将 Looker 连接到 Amazon Redshift 时,您可以使用以下选项进行配置。

名称

您想要引用的连接名称。您不应使用任何文件夹的名称。此值不需要与数据库中的任何内容匹配;它只是您分配的标签。您将在 LookML 模型的 connection 参数中使用该函数。

方言

与您的连接匹配的 SQL 方言。请务必选择正确的值,这样系统才会显示适当的连接选项,而且 Looker 也可以将您的 LookML 正确转换为 SQL。

SSH 服务器

如果实例部署在 Kubernetes 基础架构上,并且启用了向 SSH 服务器添加 SSH 服务器配置信息的功能,则可以使用 SSH 服务器选项。如果您的 Looker 实例未启用此选项,但您希望启用它,请与您的 Looker 客户经理联系,或在 Looker 的帮助中心打开支持请求。

SSH 服务器会自动为您选择 localhost 端口,目前无法指定 localhost 端口。如果您需要创建 SSH 连接(要求您指定 localhost 端口),请与您的 Looker 客户经理联系,或在 Looker 的帮助中心打开支持请求。

如需使用 SSH 隧道连接到您的数据库,请将切换开关上的滑块滑至开启位置,然后从下拉列表中选择 SSH 服务器配置

远程主机:端口

您的数据库主机名以及 Looker 应连接到数据库主机的端口。

如果您与 Looker 分析师合作,为数据库配置 SSH 隧道,请在主机字段中输入 "localhost",并在端口字段中输入重定向到您的数据库的端口号,Looker 分析师本应提供此端口号。

如果您将用户属性应用到主机字段,则该用户属性的用户访问权限级别不能设为可修改

如果您将 SSH 隧道配置为连接到数据库,则无法将用户属性应用到 Remote Host:Port 字段。

数据库

主机上数据库的名称。例如,您可能有一个主机名为 my-instance.us-east-1.redshift.amazonaws.com 的数据库,其中有一个名为 sales_info 的数据库。您需要在此字段中输入 sales_info。如果您在同一主机上有多个数据库,则可能需要创建多个连接才能使用这些数据库(MySQL 除外,其中 database 一词的含义与大多数 SQL 方言略有不同)。

使用 OAuth

对于 Snowflake 和 Google BigQuery 连接,您可以选择使用 OAuth。这意味着您的用户需要分别登录 Snowflake 或 Google,才能从 Looker 发出查询。

选择使用 OAuth 时,您会看到 OAuth 客户端 IDOAuth 客户端密钥字段:

这些值由 Snowflake 数据库或 Google 生成。如需查看完整过程,请参阅介绍 Snowflake OAuth 配置Google BigQuery OAuth 配置的文档页面。

用户名

Looker 应该用于连接到数据库的用户名。您应该按照我们的数据库配置说明提前配置用户。

密码

Looker 应该用于连接到数据库的密码。您应该按照我们的数据库配置说明提前配置密码。

架构

如果未指定架构,Looker 使用的默认架构。当您使用 SQL Runner、LookML 项目生成期间和查询表时,这都适用。

永久性派生表

选中此复选框以启用永久性派生表。系统会显示一些 PDT 字段和 PDT 替换列。只有当数据库方言支持使用 PDT 时,Looker 才会显示此选项。

请注意有关 PDT 的以下事项:

  • 使用 OAuth 的 Snowflake 连接不支持 PDT。
  • 停用某个连接的 PDT 不会停用与您的 PDT 关联的数据组。即使您停用 PDT,现有数据组仍会对数据库运行其 sql_trigger 查询。如果您希望停止某个数据组对数据库运行其 sql_trigger 查询,则必须从 LookML 项目中删除或注释掉 datagroup 参数,或者您可以为连接更新 PDT 和数据组维护时间表设置,以便 Looker 非常不频繁地检查 PDT 和数据组,或者不检查。
  • 对于 Snowflake 连接,Looker 会将 AUTOCOMMIT 参数的值设置为 TRUE(雪花的默认设置)。Looker 为维持其 PDT 注册系统而运行的 SQL 命令需要 AUTOCOMMIT

临时数据库

虽然此处的标签为 Temp Database,但您应根据自己的 SQL 方言输入数据库名称或架构名称。Looker 应使用这些名称来创建持久性派生表。您应该提前配置此数据库或架构,并提供相应的写入权限。在数据库配置说明文档页面上,选择您的数据库方言以查看相应方言的说明。

每个连接必须有自己的临时数据库架构;它们不能跨连接共享。

PDT Builder 最大连接数

使用最大 PDT 构建器连接设置,您可以指定 Looker 重新生成程序可以在数据库连接上启动的并发表数量。最大 PDT 构建器连接设置仅适用于 Looker 重新生成程序启动重建的表格类型:

  • 触发器保留表(使用 datagroup_triggersql_trigger_value 持久性策略的持久性派生表汇总表)。
  • 坚持使用 persist_for 策略,但仅当 persist_for 表属于级联派生表(在使用 datagroup_triggersql_trigger_value 保留策略的表中)时,才能保留该表。在这种情况下,Looker 重新生成程序将重建 persist_for 表,因为在级联中重建另一个表需要用到该表。否则,重新生成程序不会启动 persist_for 表的构建。

最大 PDT Builder 连接数设置默认为 1,但也可以设置为 10。不过,此值不能高于 Max Connections 字段或 Looker 的启动选项中设置的 per-user-query-limit 中的值。

请谨慎设置此值。如果该值过高,可能会让您的数据库过载。如果此值较低,则长时间运行的 PDT 或汇总表可能会延迟创建其他持久性表,或减慢其他连接速度。支持多租户的数据库(如 BigQuery、Snowflake 和 Redshift)在处理并行查询构建时可能性能更高。

如果您想增加 PDT Builder 最大连接数设置,一般而言,将增量增加 1。如果发生任何意外行为,请将其恢复为默认值 1。否则,如果查询效果未受到影响,您可以继续提高 1,并在每次增加时验证效果,然后再进一步增加设置。

对于 Max PDT Builder Connections 设置,请注意以下事项:

  • 最大 PDT 构建器连接设置仅适用于重建表所需的连接,不适用于触发器检查所需的连接。触发器检查是一种用于检查表的持久性策略是否会被触发的查询;由于这些触发器检查查询始终按顺序运行,因此“最大 PDT 构建器连接”设置不适用。
  • 聚类 Looker 实例中,再生器仅在主节点上运行。最大 PDT 构建器连接设置仅适用于主节点,因此设定了整个集群的限制。
  • 最大 PDT 构建器连接设置不适用于以下类型的表。这些类型的表是连续构建的:
    • 通过 persist_for 参数持久保留表(除非表是使用 datagroup_triggersql_trigger_value 策略的表)。
    • 处于开发模式的表
    • 使用重建派生表和运行选项重新构建的表。
    • 一个表在依赖项级联中依赖于另一个表。表不能与其所依赖的表格同时构建。例如,如果 table_B 依赖于 table_A,那么 table_A 必须先完成重新构建,然后 table_B 才能开始重新构建。

始终重试失败的 PDT build

始终重试失败的 PDT build 设置用于配置 Looker 重新生成程序如何尝试重建在上一个重新生成程序周期中失败的触发器保留表。Looker 重新生成程序会根据 PDT 和数据组维护时间表连接设置中配置的时间间隔重建持久保留表(PDT 和汇总表)。启用一律重试失败的 PDT build 设置后,即使不符合 PDT 的触发条件,Looker 重新生成程序也会尝试重建在上一个重新生成器周期中失败的 PDT。停用此设置后,只有在满足 PDT 的触发条件时,Looker 重新生成程序才会尝试重建之前失败的 PDT。默认情况下,始终重试失败的 PDT build 处于停用状态。

如需详细了解 Looker 重新生成程序,请参阅 Looker 中的派生表文档页面。

启用 PDT API 控制

启用 PDT API 控件设置决定了 start_pdt_buildcheck_pdt_buildstop_pdt_build API 调用是否可以用于此连接。如果停用此设置,当这些 API 调用引用此连接上的 PDT 时,将会失败。启用 PDT API 控件默认处于停用状态。

其他参数

如果需要,您可以在此处为查询添加其他 Java 数据库连接 (JDBC) 参数。

如需在 JDBC 参数中引用用户属性,请使用液体模板语法:_user_attributes['name_of_attribute']。例如:

my_jdbc_param={{ _user_attributes['name_of_attribute'] }}

下图展示了 Looker 在其他参数字段中显示的内容:

其他 JDBC 参数未经过 Looker 测试,且可能导致意外行为。

PDT 和 Datagroup 维护时间表

此设置接受 cron 表达式,用于指明 Looker 重新生成程序何时应检查基于 sql_trigger_value数据组和持久性表(包括汇总表持久性派生表),并查看应重新生成或删除哪些表。

默认值 */5 * * * * 表示“每 5 分钟检查一次”,这是检查的最高频率。cron 表达式表示检查更频繁会导致每 5 分钟检查一次。

在 PDT 构建过程中,Looker 不会执行额外的触发器检查。一旦上次触发器检查中的所有 PDT 构建完毕,Looker 就会根据 PDT 和数据组维护时间表继续检查 datagroup 和 PDT 触发器。

如果您的数据库并非全天候运行,您可能需要将检查限制为数据库运行的时间。以下是一些额外的 cron 表达式:

cron 表达式 定义
*/5 8-17 * * MON-FRI 在周一至周五的营业时间内,每 5 分钟检查一次数据组和 PDT
*/5 8-17 * * * 每天工作时间内每 5 分钟检查一次数据组和 PDT
0 8-17 * * MON-FRI 在每个周一至周五的工作时间(周一至周五)查看数据组和 PDT
1 3 * * * 每天凌晨 3:01 查看 datagroup 和 PDT

创建 cron 表达式时需要注意以下几点:

  • Looker 使用 parse-cron v0.1.3,该版本不支持 cron 表达式中的 ?
  • cron 表达式使用 Looker 应用时区来确定何时进行检查。
  • 如果未构建 PDT,请将 Cron 字符串重置为默认值 */5 * * * *

以下是一些有助于创建 cron 字符串的资源:

SSL

选择是否要使用 SSL 加密来保护在 Looker 与数据库之间传递的数据。SSL 只是一种可用于保护您的数据的选项;如需了解其他安全选项,请参阅启用安全的数据库访问文档页面。

验证 SSL 证书

选择您是否需要验证连接所使用的 SSL 证书。如果需要进行验证,则用于签署 SSL 证书的 SSL 证书授权机构 (CA) 必须来自客户端的可信来源列表。如果 CA 不是可信来源,则数据库连接未建立。

如果此复选框处于未选中状态,则连接上仍会使用 SSL 加密,但无需验证 SSL 连接,因此当 CA 不位于客户端的可信来源列表中时,可建立连接。

最大连接数

您可以在此处设置 Looker 可以与数据库建立的连接数上限。在大多数情况下,您需要设置 Looker 可以对您的数据库运行的并发查询数。Looker 最多预留三个连接以用于查询终止。如果连接池非常小,则 Looker 将预留较少的连接。

请谨慎设置此值。如果值过高,可能会使数据库过载。如果值过低,则查询必须共享少量连接。因此,许多查询似乎对用户来说很慢,因为查询必须等待之前的其他查询返回。

默认值(具体取决于您的 SQL 方言)通常是一个合理的起点。大多数数据库还有自己的设置,用于接受可接受的最大连接数。如果您的数据库配置限制了连接数,请确保最大连接数值等于或低于数据库的限制。

连接池超时

如果您的用户发出的连接请求多于最大连接数设置,请求会在执行前等待其他用户完成。此处配置的请求等待时间上限。您应谨慎设置此值。如果目标值过低,用户可能会发现查询被取消,因为其他用户没有足够的时间来完成查询。如果目标值过高,可能会造成大量查询,导致用户等待很长时间。默认值通常是合理的起点。

估算费用

费用估算复选框仅适用于以下数据库连接:

费用估算复选框会在连接上启用以下功能:

BigQueryMySQL 连接还支持费用估算功能,但由于该功能始终处于启用状态,因此 BigQuery 和 MySQL 连接没有费用估算复选框。

如需了解详情,请参阅在 Looker 中探索数据文档页面。

SQL Runner 预缓存

在 SQL Runner 中,一旦您选择了连接和架构,系统就会预先加载所有表信息。这样,SQL Runner 可以在您点击表名称后立即快速显示表列。不过,对于具有许多表或非常大的表的连接和架构,您可能不希望 SQL Runner 预加载所有信息。

如果您希望 SQL Runner 在只选择表时加载表信息,可以取消选择 SQL Runner Precache 选项,以停用连接的 SQL Runner 预加载功能。

提取信息架构以进行 SQL 写入

对于某些 SQL 写入功能(例如聚合感知),Looker 会使用数据库的信息架构来优化 SQL 写入。如果信息架构未缓存,Looker 可能偶尔需要阻止 SQL 向数据库写入数据,才能提取信息架构。对于使用 Hadoop 分布式文件系统 (HDFS) 的方言,提取信息架构可能需要足够长的时间才能对 Looker 查询的性能产生重大影响。如果您知道信息架构运行缓慢,则可以为连接停用 Fetch Information Schema for SQL WRITE 选项。停用此功能后,系统会对某些功能停用 Looker 的某些 SQL 优化功能,因此除非您知道连接的信息架构运行速度特别慢,否则应该启用 SQL 信息架构 - 写入 SQL 选项。

停用上下文注释

停用上下文注释选项仅适用于 BigQuery 连接。对 Google BigQuery 连接的上下文注释默认处于停用状态,因为上下文注释使 Google BigQuery 的缓存功能失效,并可能会对缓存性能产生负面影响。您可以为 BigQuery 连接启用上下文注释,方法是在连接的连接设置页面上取消选择停用上下文注释设置。如需了解详情,请参阅 Google BigQuery 文档页面。

数据库时区

您的数据库存储基于时间的信息的时区。Looker 需要知道这一点,才能为用户转换时间值,从而更轻松地理解和使用基于时间的数据。如需了解详情,请参阅使用时区设置文档页面。

查询时区

只有在您已停用特定于用户的时区的情况下,系统才会显示查询时区选项。

停用用户专用时区后,当用户查询基于时间的数据时,系统会显示时区“查询时区”以及从 Database Time Zone 将时区数据转换为哪个时区的时区。

如需了解详情,请参阅使用时区设置文档页面。

为 PDT 流程配置单独的登录凭据

如果您的数据库支持持久性派生表,并且您已在连接设置中勾选了永久性派生表复选框,那么 Looker 会显示 PDT 替换列。在 PDT Overrides 列中,您可以输入特定于 PDT 流程的单独 JDBC 参数(主机、端口、数据库、用户名、密码、架构和其他参数)。这种做法非常有价值,原因如下:

  • 通过为 PDT 流程创建单独的数据库用户,即使您为数据库登录凭据分配用户属性,也可以在模型中使用 PDT。
  • PDT 流程可以通过具有更高优先级的单独数据库用户进行身份验证。这样,数据库就可以优先于不太重要的用户查询确定 PDT 作业的优先级。
  • 可以撤消标准 Looker 数据库连接的写入权限,并且只能将权限授予 PDT 流程将用于身份验证的特殊用户。对于大多数组织来说,这是一个更好的安全策略。
  • 对于 Snowflake 之类的数据库,PDT 流程可以路由到未与其他 Looker 用户共享的更强大的硬件。这样,PDT 就可以快速构建,而不会产生全职运行昂贵硬件的成本。

例如,以下配置展示了一个连接,其中用户名和密码字段设置为用户属性。这样,每个用户就可以使用各自的凭据访问数据库。“PDT 替换”列会创建一个使用自己的密码的单独用户 (pdt_user)。pdt_user 帐号将用于所有 PDT 流程,并且具有适合 PDT 创建和更新的访问权限级别:

虽然 PDT 覆盖列可让您更改数据库用户和其他连接属性,但 PDT 覆盖必须读取与默认连接相同的数据,并且它必须将数据写入相同的位置。Looker 无法从一个位置读取数据并将其写入另一个位置。

测试您的连接设置

输入凭据后,点击测试这些设置,以验证信息是否正确,以及数据库是否可以连接。

如果您的连接未通过一项或多项测试,请执行以下操作:

  • 请尝试执行测试数据库连接文档页面上的一些问题排查步骤。
  • 如果你在 Versa 3 上运行 Mongo 3.6 或更早版本,并收到通信链接失败问题,请参阅 Mongo 连接器文档页面。
  • 如需接收有关临时架构和 PDT 的成功连接消息,您必须在设置 Looker 数据库时允许该功能。有关说明,请参阅数据库配置说明文档页面。

使用 OAuth 的数据库连接(例如 SnowflakeGoogle BigQuery)要求用户登录。如果您在测试上述任一连接时未登录 OAuth 用户帐号,Looker 会显示包含登录链接的警告。点击该链接以输入您的 OAuth 凭据或允许 Looker 访问您的 OAuth 帐号信息。

如果您仍遇到问题,请与 Looker 支持团队联系以获取帮助。

以用户身份测试

如果您为用户属性设置了一个或多个连接参数值测试为用户选项将会出现在测试这些设置按钮的上方。选择一位用户,然后点击测试这些设置,以验证数据库能否以该用户的身份进行连接和运行查询。

添加数据库连接

配置并测试数据库连接设置后,点击添加连接。您的数据库连接现已添加到连接页面的列表中。

后续步骤

将数据库连接到 Looker 后,您就可以为用户配置登录选项了。