使用增强型工作流将 Looker 连接到数据库

保护配置数据库后,您就可以将数据库连接到 Looker 了。如果启用了新的数据库连接设置实验室功能,添加/修改连接页面将采用更新后的界面,并提供增强的验证和连接测试功能、更详实的文档(包括云端专用资源)以及全面的配置摘要。

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

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

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

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

输入数据库连接设置后,您可以测试连接,确保其配置正确无误。如需了解问题排查信息,请参阅测试数据库连接文档页面。如果 Looker 显示可以连接,请按连接以创建连接。然后,您的数据库连接会添加到 Looker 连接 管理页面上的列表中。

“数据库连接设置”包含以下四个部分:

常规设置

名称

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

SQL 方言

与您的连接匹配的 SQL 方言。请务必选择正确的值,以便您看到正确的连接选项并且 Looker 可以将您的 LookML 正确转换为 SQL。

项目范围

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

  • 所有项目:实例上的所有 LookML 项目都可以访问该连接,因此可以在该项目中模型文件的 connection 参数中指定连接名称。
  • 所选项目:实例上只有一个 LookML 项目可以访问该连接。选择此选项后,“连接”屏幕会显示实例中项目的下拉菜单。选择可以访问此关联的项目。

将此选项与以下权限搭配使用,即可委托连接管理和模型配置:

状态详细信息

展开状态详情部分,以测试连接的设置。

数据库设置

启用 SSH 服务器

只有当实例部署在 Kubernetes 基础架构上,并且向 Looker 实例中添加 SSH 服务器配置信息的功能已启用时,SSH 服务器选项才可用。如果您的 Looker 实例未启用此选项,而您想启用它,请与 Google Cloud 销售专家联系或创建支持请求。如果您开启 Enable SSH Server(启用 SSH 服务器)选项,Looker 将显示 SSH Server(SSH 服务器)和 SSH Tunnel(SSH 隧道)字段。

SSH 服务器

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

从下拉列表中选择一个 SSH 服务器配置。必须选择 SSH 服务器才能选择或创建合适的 SSH 隧道。您可以在连接面板的 SSH 服务器标签页中创建新的 SSH 服务器。

SSH 隧道

从下拉列表中选择现有的 SSH 隧道,或者点击创建新隧道图标(如果您想创建具有主机名端口本地端口的新 SSH 隧道)。

主机名

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

如果您已与 Looker 分析师合作为数据库配置 SSH 隧道,请在主机字段中输入 "localhost"。如果您向主机字段应用用户属性,则该用户属性的用户访问权限级别不得设为可修改。如果您配置了 SSH 隧道来连接到数据库,则无法将用户属性应用于远程主机:端口字段。

端口

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

如果您已与 Looker 分析师合作配置了指向数据库的 SSH 隧道,请在“端口”字段中输入重定向到数据库的端口号(应由 Looker 分析师提供)。

本地端口

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

结算项目 ID(仅限 Google BigQuery)

结算项目 ID 是 Google Cloud 项目 ID。如需了解详情,请参阅 Google BigQuery 文档页面。

存储项目 ID(仅限 Google BigQuery)

如果您将计算和存储分到不同的项目中,请提供存储项目 ID 的名称。如果您的 LookML 开发者在 LookML 视图探索联接sql_table_name 参数中指定了完全限定的表名称,您就可以查询其他 Google Cloud 项目中的数据集。如需了解详情,请参阅 Google BigQuery 文档页面。

主要数据集(仅限 Google BigQuery)

您希望 Looker 在查询数据库时默认使用的数据集的名称。如需了解详情,请参阅 Google BigQuery 文档页面。

数据库名称

主机上的数据库的名称。例如,您可以有一个主机名为 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、Trino 和 Databricks 连接,您可以选择配置 OAuth 或数据库账号,以便 Looker 用于对数据库进行身份验证。

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

用户名

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

密码

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

展开状态详情部分,以测试连接的设置。

可选设置

每个节点的连接数上限

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

请谨慎设置此值。如果该值过高,可能会导致数据库过载。如果此值过低,则查询必须共享少量连接。因此,许多查询可能看起来速度缓慢,因为这些查询必须等待其他较早的查询返回。

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

连接池超时时间

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

请谨慎设置此值。如果该值过低,其他用户的查询可能无法完成,因为没有足够的时间来完成其他用户的查询,从而导致用户的查询被取消。如果过高,可能会积累大量查询,导致用户等待很长时间。默认值通常是一个合理的起点。

其他 JDBC 参数

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

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

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

维护时间表

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

Maintenance Schedule 值用于为 Looker 再生器设置 cron 间隔。Looker 重新生成器会启动重新生成器周期,以便在 cron 间隔时间内检查数据集和永久性表。如果在下一个 cron 间隔时刻,Looker 再生器周期仍在进行中,Looker 再生器将完成正在进行的再生器周期,然后等到下一个 cron 间隔时刻开始下一个再生器周期。

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

默认的五分钟也是维护时间表支持的最短间隔时间。Looker 不会强制执行维护时间表的最大间隔时间,这意味着您可以延长 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 字符串的资源:

SSL

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

验证 SSL

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

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

预缓存表和列

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

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

提取并缓存架构

对于某些 SQL 编写功能(例如汇总感知),Looker 会使用数据库的信息架构来优化 SQL 编写。如果未缓存信息架构,Looker 可能需要不时阻止向数据库写入 SQL,以便提取信息架构。对于使用 Hadoop 分布式文件系统 (HDFS) 的方言,提取信息架构可能需要很长时间,这会严重影响 Looker 查询的性能。如果您知道信息架构运行缓慢,可以为连接停用提取并缓存架构选项。停用此功能会阻止对某些功能执行一些 Looker SQL 优化,因此除非您知道连接的信息架构特别慢,否则应启用提取和缓存架构选项。

费用估算值

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

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

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

数据库连接池

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

永久性派生表 (PDT) 设置

如果启用了 PDT,系统会显示以下设置。

启用 PDT

开启启用 PDT 切换开关,以启用永久性派生表。启用 PDT 后,连接窗口会显示其他 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

临时数据库

虽然此数据库标记为临时数据库,但您应根据自己的 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)在处理并发查询 build 时可能具有更高的性能。

如果您想提高 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 构建

重试失败的 PDT 构建切换开关用于配置 Looker 重新生成器尝试重建在上一个重新生成器周期中失败的触发器持久化表的方式。Looker 再生器是根据维护时间表连接设置中配置的间隔时间重新构建触发器持久化表(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 创建和更新的访问权限级别。
  • 您可以快速区分用户查询流量和 PDT 进程流量,以便执行监控 System Activity 等操作。

数据库时区

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

查询时区

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

停用用户自选时区后,查询时区是指用户查询基于时间的数据时系统向其显示的时区,也是 Looker 将基于时间的数据从数据库时区转换到的时区。

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

展开状态详情部分,以测试连接的设置。

审核

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

  • 选择连接设置页面底部的测试按钮。
  • 连接管理页面上,点击连接列表旁边的测试按钮,如连接文档页面中所述。
  • 在关联设置的每个步骤底部,选择查看按钮。在查看部分中,查看并修改您在上一部分中输入的连接详情。展开状态详情部分,以测试连接的设置。点击各个部分旁边的修改图标,即可返回相应部分更改设置。

如果您的连接未通过一项或多项测试,请参考以下问题排查选项:

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

使用 OAuth 的数据库连接(例如 SnowflakeGoogle BigQuery)需要用户登录。如果您在测试其中一种连接时未登录 OAuth 用户账号,Looker 会显示一条警告,并附带登录链接。点击链接即可输入您的 OAuth 凭据,或允许 Looker 访问您的 OAuth 账号信息。

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

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

后续步骤

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