PostgreSQL

本页介绍如何将 PostgreSQL 连接为数据仓库。有关将 PostgreSQL 用作 Metabase 的应用程序数据库,请参阅配置 Metabase 应用程序数据库

要添加数据库连接,请点击右上角的齿轮图标,然后导航到管理设置 > 数据库 > 添加数据库

填写该数据库的字段,然后点击底部的保存更改

支持的版本

Metabase 支持从 PostgreSQL 最旧支持版本到最新的稳定版本。请参阅PostgreSQL 版本

设置

您可以随时编辑这些设置。请记住保存您的更改。

显示名称

Metabase 界面中数据库的显示名称。

主机

您数据库的 IP 地址或其域名(例如,esc.mydatabase.com)。

端口

数据库端口。例如,5432。

数据库名称

您要连接的数据库的名称。

用户名

您要用于连接数据库的帐户的数据库用户名。您可以设置到同一数据库的多个连接,使用不同的用户帐户连接到同一数据库,每个帐户都具有不同的权限

密码

您用于连接数据库的用户名的密码。

使用身份验证提供程序

使用提供程序进行身份验证仅在 ProEnterprise 计划(包括自托管和 Metabase 云)中可用。

除了密码,您还可以使用受支持的提供程序进行身份验证。

仅适用于自托管的 Pro 和 Enterprise 计划。

Azure 托管标识

要使用 Azure 托管标识,您需要输入您的 客户端 ID

Oauth

要使用 Oauth 作为提供程序,您需要输入您的

  • Auth 令牌 URL
  • Auth 令牌请求标头(JSON 映射)

模式

您可以指定要同步和扫描的模式。选项包括

  • 全部
  • 仅限这些…
  • 除了这些…

对于仅限这些除了这些选项,您可以输入逗号分隔的值列表,以告知 Metabase 您要包含(或排除)哪些模式。例如

foo,bar,baz

您可以使用 * 通配符来匹配多个模式。

假设您有三个模式:foo、bar 和 baz。

  • 如果您设置了仅限这些…,并输入字符串 b*,您将同步 bar 和 baz。
  • 如果您设置了除了这些…,并输入字符串 b*,您将只同步 foo。

请注意,仅支持 * 通配符;您不能使用其他特殊字符或正则表达式。

使用安全连接 (SSL)

Metabase 会自动尝试首先使用 SSL 连接数据库,如果失败,则不使用 SSL 连接。如果可以使用 SSL 连接连接到您的数据库,Metabase 会将 SSL 连接设置为数据库的默认设置。如果您希望在没有此安全层的情况下连接,您可以稍后更改此设置,但我们强烈建议保持启用 SSL 以确保您的数据安全。

SSL 模式

PostgreSQL 数据库在其连接中支持不同的安全级别,具有不同的开销。

SSL 模式选项包括

  • allow
  • prefer
  • require
  • verify-ca
  • verify-full

请参阅 PostgreSQL 文档中关于不同 SSL 模式 的表格,并选择适合您的选项。

SSL 根证书 (PEM)

如果您将 SSL 模式设置为“verify-ca”或“verify-full”,则需要指定根证书 (PEM)。您可以选择使用本地文件路径上传文件路径。如果您使用的是 Metabase 云,则需要选择上传文件路径并上传您的证书。

验证客户端证书

切换为开启以显示客户端证书选项。

SSL 客户端证书 (PEM)

您可以选择使用本地文件路径上传文件路径。如果您使用的是 Metabase 云,则需要选择上传文件路径并上传您的证书。

SSL 客户端密钥 (PKCS-8/DER)

同样,您可以选择使用本地文件路径上传文件路径。如果您使用的是 Metabase 云,则需要选择上传文件路径并上传您的证书。您还需要输入您的 SSL 客户端密钥密码

私钥必须是 PKCS8 格式并以 DER 格式存储。

如果您有 PEM SSL 客户端密钥,您可以使用 openssl 将该密钥转换为 PKCS-8/DER 格式。命令如下所示

openssl pkcs8 -topk8 -inform PEM -outform DER -in client-key.pem -out client-key.der -nocrypt

注意:如果您使用的是 GCP 并且您设法颁发了客户端证书,则所有内容都将以 PEM 格式提供,您只需要将 client-key.pem 转换为 client-key.der 用于“SSL 客户端密钥”

使用 SSH 隧道

请参阅我们的 SSH 隧道指南

高级设置

展开 JSON 列

对于 PostgreSQL 数据库,Metabase 可以将 JSON 列展开为组件字段,以生成一个表,其中每个 JSON 键都成为一个列。JSON 展开默认情况下处于开启状态,但如果性能较慢,您可以关闭 JSON 展开。

如果您开启了 JSON 展开,您还可以在表元数据中切换单个列的展开。

其他 JDBC 连接字符串选项

您可以将选项附加到 Metabase 用于连接数据库的连接字符串。使用格式

options=-c%20key=value

PostgreSQL 连接 URI 期望对空格和符号进行 百分比编码

为简单探索重新运行查询

如果用户希望在应用任何汇总或筛选器选择之前点击运行(播放按钮),请关闭此选项。

默认情况下,当您从汇总菜单中选择分组选项或从钻取菜单中选择筛选条件时,Metabase 将立即执行查询。如果您的数据库速度较慢,您可能需要禁用重新运行以避免每次点击都加载数据。

选择 Metabase 同步和扫描的时间

开启此选项以管理 Metabase 用于保持数据库最新状态的查询。有关更多信息,请参阅同步和扫描数据库

数据库同步

如果您选择了选择同步和扫描发生的时间 > 开启,您将能够设置

  • 同步的频率:每小时(默认)或每天。
  • 运行同步的时间,以运行 Metabase 应用程序的服务器的时区为准。

扫描筛选器值

Metabase 可以扫描此数据库中每个字段中存在的值,以在仪表盘和问题中启用复选框筛选器。这可能是一个相当耗费资源的过程,尤其是在您拥有非常大的数据库的情况下。

如果您选择了选择同步和扫描发生的时间 > 开启,您将在扫描筛选器值下看到以下选项

  • 定期,按计划允许您以与数据库更改速率相匹配的频率运行扫描查询。时间以运行 Metabase 应用程序的服务器的时区为准。对于小型数据库或经常更新具有不同值的表,这是最佳选择。
  • 如果您希望按需运行扫描查询,仅在添加新的筛选器小组件时是一个不错的选择。开启此选项意味着 Metabase 仅在向仪表盘或 SQL 问题添加新筛选器时扫描和缓存所用字段的值。
  • 从不,如果需要,我会手动执行此操作 适用于数据库过大或从未真正添加新值的情况。使用立即重新扫描字段值按钮运行手动扫描并使您的筛选器值保持最新。

定期重新指纹识别表

定期重新指纹识别将增加数据库的负载。

开启此选项以在 Metabase 每次运行同步时扫描值样本。

指纹识别查询会检查每个列的前 10,000 行,并使用该数据来估算每个列有多少个唯一值、数值列和时间戳列的最小值和最大值等等。如果您关闭此选项,Metabase 将仅在设置期间对您的列进行一次指纹识别。

进一步阅读

阅读其他Metabase 版本的文档。