将 Looker 连接到您的数据库

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

您可以在将您的数据库连接到 Looker 页面上,在 Looker 中创建数据库连接。您可以通过以下两种方式打开将数据库连接到 Looker 页面:

  • 管理面板的数据库部分选择连接。在连接页面上,点击添加连接按钮。
  • 点击左侧导航面板中的创建按钮,然后选择连接菜单项。

如需详细了解如何将用户属性应用于连接设置,请参阅用户属性文档页面的连接部分。

本页面介绍了 Looker 在将您的数据库连接到 Looker 页面上显示的常用字段。该页面显示的确切字段取决于您的方言设置。

输入数据库连接设置后,您可以选择将您的数据库连接到 Looker 页面上的测试按钮,以测试连接并确保配置正确无误。点击测试以验证连接是否成功。如需了解问题排查信息,请参阅测试数据库连接文档页面。如果 Looker 显示可以连接,请按连接以创建连接。然后,您的数据库连接就会添加到 Looker 连接管理页面上的列表中。

常规设置

名称

要引用的连接的名称。您需要在 LookML 模型的 connection 参数中使用此数据库连接名称。数据库连接名称也是 Looker 的连接管理页面上用于标识连接的方式。请勿为此设置使用任何文件夹的名称。这个值不需要与您数据库中的任何内容匹配;Name 是 Looker 界面中标识此连接的标签。

连接范围

选择该连接是否可用于所有项目,还是仅适用于一个项目。

使用此选项以及以下权限来委托连接管理和模型配置:

方言

与您的连接匹配的 SQL 方言。请务必选择正确的值,以便系统为您提供正确的连接选项,以便 Looker 将您的 LookML 正确转换为 SQL。

结算项目 ID

(仅限 Google BigQuery 连接)结算项目 ID 是 Google Cloud 项目 ID。

主机

Looker 应该用于连接到数据库主机的数据库主机名。

如果您与 Looker 分析师合作配置连接到数据库的 SSH 隧道,请在主机字段中输入 "localhost"

端口

Looker 应该用于连接到数据库主机的数据库端口。

如果您与 Looker 分析师合作配置连接到数据库的 SSH 隧道,请在端口字段中输入重定向到您的数据库的端口号,该端口号应由 Looker 分析师提供。

数据库

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

架构

在未指定架构时,Looker 使用的默认架构。这适用于使用 SQL Runner 时、LookML 项目生成期间以及查询表时。

身份验证

对于 Google BigQuerySnowflakeTrinoDatabricks 连接,请选择您希望 Looker 用于访问数据库的身份验证类型:

  • 对于 Google BigQuery 连接,您可以选择配置 OAuth 或服务账号,供 Looker 用于向您的数据库进行身份验证。
  • 对于 Snowflake、Trno 和 Databricks 连接,您可以选择配置 OAuth 或数据库账号,以供 Looker 用于对您的数据库进行身份验证。

使用 OAuth 时,用户必须登录您的数据库才能从 Looker 发出查询。如需详细了解如何在与 Looker 的连接上配置 OAuth,请参阅 Google BigQuerySnowflakeTrinoDatabricks 连接过程。

用户名

数据库中用户账号的用户名,Looker 可以使用该用户名连接到您的数据库。

密码

您数据库的用户账号的密码,Looker 可用于连接到数据库。

可选设置

SSH 服务器

只有在实例部署在 Kubernetes 基础架构上,并且启用了将 SSH 服务器配置信息添加到 Looker 实例的功能时,SSH 服务器选项才可用。如果您的 Looker 实例上未启用此选项,但您希望启用它,请与 Google Cloud 销售专员联系或提交支持请求

SSH 服务器会自动为您选择本地主机端口,但您无法指定本地主机端口。如果您需要创建需要指定 localhost 端口的 SSH 连接,请创建支持请求

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

本地端口

默认情况下,Looker 会自动为 SSH 隧道选择可用的本地端口。要手动选择本地端口,请选择手动输入,然后在自定义本地端口字段中输入端口号。确保本地端口在您的实例上可用。

永久性派生表 (PDT)

启用 PDT

开启启用 PDT 切换开关,以启用永久性派生表。启用 PDT 后,Connection 窗口会显示其他 PDT 字段以及 PDT 替换部分。仅当数据库方言支持使用 PDT 时,Looker 才会显示启用 PDT 切换开关。

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

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

临时数据库

虽然标有 Temp Database,但您可以根据自己的 SQL 方言输入数据库名称或架构名称,Looker 应使用它们来创建永久性派生表。您应该提前配置此数据库或架构,并使用适当的写入权限。在数据库配置说明文档页面上,选择您的数据库方言即可查看该方言的说明。

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

PDT 构建器连接数上限

通过 PDT 构建器连接数上限设置,您可以指定 Looker 重新生成器可以在数据库连接上启动的并发表构建数量。PDT 构建器连接数上限设置仅适用于 Looker 重新生成器为其启动重建的表类型:

  • 触发器保留型表(使用 datagroup_triggersql_trigger_value 持久保留策略的永久性派生表汇总表)。
  • 使用 persist_for 策略的保留表,但前提是 persist_for 表是派生表级联的一部分;在这种情况下,使用 datagroup_triggersql_trigger_value 保留策略的表会依赖该表。在这种情况下,Looker 重新生成器将重新构建一个 persist_for 表,因为在级联中重建另一个表时需要用到该表。否则,重新生成器不会启动针对 persist_for 表的构建。

PDT 构建器连接数上限设置默认为 1,但可以设置为 10。但是,此值不能高于每个节点的最大连接数字段中设置的值,也不得高于 Looker 的启动选项中设置的 per-user-query-limit 的值。

请谨慎设置此值。如果该值过高,可能会导致数据库过载。如果该值很小,则长时间运行的 PDT 或汇总表可能会延迟其他永久表的创建,或降低连接上其他查询的速度。支持多租户的数据库(例如 BigQuery、Snowflake 和 Redshift)在处理并行查询构建方面可能效果更好。

如果您想提高 PDT 构建器连接数上限设置,一个很好的经验法则是按 1 的增量进行提高。如果出现任何意外行为,请将其重新设为默认值 1。否则,如果查询性能不受影响,您可以继续将它以 1 为增量递增,并在每次递增时验证性能,然后再进一步提高该设置。

对于 PDT 构建器连接数上限设置,请注意以下事项:

  • PDT 构建器连接数上限设置仅适用于重建表所需的连接,而不适用于触发器检查所需的连接。触发器检查是一个查询,用于检查是否触发了表的持久化策略;由于这些触发器检查查询始终按顺序运行,因此 PDT 构建器连接数上限设置不适用。
  • 集群 Looker 实例中,重新生成器仅在主节点上运行。PDT 构建器连接数上限设置仅适用于主节点,因此会设置针对整个集群的限制。
  • PDT 构建器连接数上限设置不适用于以下类型的表。以下类型的表是连续构建的:
    • 通过 persist_for 参数保留的表(除非表依赖于使用 datagroup_triggersql_trigger_value 策略的表)。
    • 开发模式下的表
    • 使用重新构建派生表并运行选项重新构建的表。
    • 在依赖关系级联中,一个表依赖于另一个表。表无法与其所依赖的表同时构建。例如,如果 table_B 依赖于 table_A,则 table_A 必须在 table_B 开始重建之前完成重新构建。

数据组和 PDT 维护时间表

Looker 重新生成器会检查基于 sql_trigger_valuedatagroups 和保留的表(包括汇总表永久性派生表)。根据这些检查,Looker 重新生成器会从数据库的从零开始架构中重新构建或删除永久性表。

数据组和 PDT 维护时间表值用于设置 Looker 重新生成器的 cron 间隔。Looker 重新生成器会启动再生成器循环,以按 cron 间隔检查数据组和持久化表。如果 Looker 再生成器周期在下一个 cron 间隔期间仍在进行中,则 Looker 再生成器将完成正在进行的再生成器周期,然后等到下一个 cron 间隔后再开始下一个再生成器周期。

数据组和 PDT 维护时间表设置接受 cron 表达式。默认值为 */5 * * * *,这意味着,如果上一个再生器周期已完成,Looker 再生器周期将以 5 分钟的间隔启动一个周期。如果之前的再生成器周期尚未完成,Looker 再生成器将在周期结束后的下一个五分钟间隔内启动。

默认的五分钟也是 Datagroup 和 PDT 维护时间表支持的最频繁间隔。Looker 不对 Datagroup 和 PDT 维护时间表强制执行最大间隔,这意味着,您可以将 Looker 再生器周期之间的间隔时间延长到可以通过 cron 表达式指定的时长。请注意,Looker 再生器周期越长,缓存和持久表中数据的新鲜度就越差。

Looker 重新生成器在一个周期内完成所有检查和 PDT 重新构建后,它将等待下一个 cron 间隔来启动下一个周期。如果您有长时间运行的 PDT build,则可能会在 Looker 再生成器周期之间有较长的时间。其他因素可能会影响重新构建表所需的时间,如 Looker 中的派生表页面上的实现持久表的重要注意事项部分所述。

如果您的数据库不是全天候运行,您可能希望将检查限制为数据库运行时间。下面是一些其他 cron 表达式:

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

创建 cron 表达式时,需要注意以下事项:

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

以下是一些可帮助您创建 cron 字符串的资源:

重试失败的 PDT 构建

重试失败的 PDT 构建切换开关可配置 Looker 重新生成器如何尝试重新构建在上一个重新生成器周期中失败的触发器保留的表。Looker 重新生成器过程会根据数据组和 PDT 维护时间表连接设置中配置的时间间隔,重建触发器保留表(PDT 和汇总表)。启用重试失败的 PDT 构建切换开关后,Looker 重建程序将尝试重新构建在之前重建周期中失败的 PDT,即使 PDT 的触发条件不满足也是如此。如果停用此设置,只有在满足 PDT 的触发条件时,Looker 重新生成器才会尝试重新构建之前失败的 PDT。重试失败的 PDT 构建默认处于停用状态。

如需详细了解 Looker 再生成器,请参阅 Looker 中的派生表文档页面。

PDT API 控制

PDT API 控制切换开关决定了 start_pdt_buildcheck_pdt_buildstop_pdt_build API 调用是否可以用于此连接。当 PDT API 控制切换开关停用时,如果这些 API 调用在此连接上引用 PDT,则会失败。默认情况下,PDT API 控制切换开关处于停用状态。

PDT 覆盖

如果您的数据库支持永久性派生表,并且您已在连接设置中开启启用 PDT 切换开关,Looker 会显示 PDT 替换项部分。在 PDT 替换项部分,您可以输入专用于 PDT 进程的单独 JDBC 参数(主机、端口、数据库、用户名、密码、架构、其他参数和连接后语句)。这样做可能很有价值,原因有很多:

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

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

“将数据库连接到 Looker”页面的“PDT 替换项”部分。

时区

数据库时区

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

查询时区

只有在停用用户特定时区后,查询时区选项才会显示。

停用用户专属时区后,查询时区就是用户查询基于时间的数据时向其显示的时区,以及 Looker 将数据库时区中基于时间的数据转换为的时区。

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

其他设置

其他 JDBC 参数

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

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

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

每个节点的连接数上限

在这里,您可以设置 Looker 可以与数据库建立的连接数量上限。在大多数情况下,您要设置 Looker 可以对数据库同时运行的查询数量。Looker 还保留最多三个连接来终止查询。如果连接池非常小,Looker 会预留的连接较少。

请谨慎设置此值。如果该值过高,则您的数据库可能会超负荷运行。如果此值过低,则查询必须共享少量连接。因此,用户可能会觉得很多查询速度很慢,因为查询必须等待其他较早的查询返回。

默认值(因 SQL 方言而异)通常是一个合理的起点。大多数数据库也有自己的设置,用于设定接受的最大连接数。如果您的数据库配置限制了连接数,请确保每个节点的连接数上限值等于或低于数据库的上限。

连接池超时

如果用户请求的连接数超出 每节点的连接数上限设置,这些请求将等待其他请求完成后才能执行。您可在此处配置请求等待的最长时间。默认设置为 120 秒。

请谨慎设置此值。如果目标值过低,用户可能会发现自己的查询被取消了,因为没有足够的时间来查看其他用户查询完成。如果过高,则系统可能会累积大量查询,导致用户需要等待很长的时间。通常,默认值是一个合理的起点。

SSL

选择是否要使用 SSL 加密来保护 Looker 和数据库之间传递的数据。SSL 只是其中一种用于保护您的数据的选项;启用安全的数据库访问文档页面介绍了其他安全选项。

验证 SSL

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

如果未选中此复选框,连接仍会使用 SSL 加密,但无需验证 SSL 连接,因此即使 CA 不在客户端的可信来源列表中,也能建立连接。

SQL Runner 预缓存

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

如果您希望 SQL Runner 仅在选择表时加载表信息,可以取消选择 SQL Runner 预缓存选项,以停用针对连接的 SQL Runner 预加载。

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

对于某些 SQL 编写功能(例如汇总感知),Looker 会使用您数据库的信息架构来优化 SQL 编写。如果未缓存信息架构,Looker 可能需要不时阻止向数据库写入 SQL,以便提取信息架构。对于使用 Hadoop 分布式文件系统 (HDFS) 的方言,提取信息架构可能需要的时间足够长,可能会对 Looker 查询的性能产生显著影响。如果您知道信息架构运行缓慢,则可以为连接停用提取用于 SQL 编写的信息架构选项。停用此功能会导致系统无法对某些功能进行 Looker SQL 优化,因此您应该启用提取信息架构以进行 SQL 编写选项,除非您知道连接的信息架构速度特别慢。

费用估算值

费用估算切换开关仅适用于以下数据库连接:

费用估算切换开关可在连接上启用以下功能:

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

数据库连接池

对于支持数据库连接池的方言,此功能允许 Looker 通过 JDBC 驱动程序使用连接池。数据库连接池可提高查询性能;新查询无需创建新的数据库连接,而是可以使用连接池中的现有连接。连接池功能可确保在查询执行后清理连接,并且可在查询执行结束后重复使用。如需了解详情,请参阅数据库连接池文档页面。

测试您的连接设置

您可以在 Looker 界面中的几个位置测试连接设置:

  • 选择 Connections Settings 页面底部的 Test 按钮。
  • 连接管理页面上的连接列表旁,选择测试按钮,如连接文档页面中所述。

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

如果您的连接未通过一项或多项测试,可以使用下面这些问题排查方法:

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

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

以用户身份进行测试

如果您已将一个或多个连接参数值设置为某个用户属性,则会显示以用户身份进行测试选项。选择用户,然后点击测试,验证数据库能否以此用户的身份连接和运行查询。

后续步骤

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