Google BigQuery
要添加数据库连接,请点击右上角的齿轮图标,然后导航至管理设置 > 数据库 > 添加数据库。
先决条件
您需要拥有一个 Google Cloud Platform 账户,并在其中包含您想要在 Metabase 中使用的项目。有关如何创建和管理项目,请参阅 Google Cloud Platform 文档。此项目应包含一个 BigQuery 数据集,供 Metabase 连接。
Google Cloud Platform:创建服务账户和 JSON 文件
您首先需要一个服务账户 JSON 文件,Metabase 可以使用该文件访问您的 BigQuery 数据集。服务账户旨在供非人类用户(例如 Metabase 等应用程序)验证其 API 调用的身份(我是谁?)和授权(我可以做什么?)。
要创建服务账户 JSON 文件,请按照 Google 关于设置 BigQuery 数据集服务账户的文档进行操作。以下是基本流程
-
创建服务账户。从您的 Google Cloud Platform 项目控制台,打开左侧的主侧边栏菜单,转到 IAM & 管理部分,然后选择服务账户。控制台将列出现有的服务账户(如果有)。在屏幕顶部,点击 + 创建服务账户。
-
填写服务账户详细信息。命名服务账户,并添加描述(服务账户 ID 将在您添加名称后填充)。然后点击创建按钮。
-
授予服务账户对此项目的访问权限。您需要向服务账户添加角色,以便 Metabase 有权查看和运行针对您的数据集的查询。请确保向服务账户添加以下角色
- BigQuery Data Viewer
- BigQuery Metadata Viewer
- BigQuery Job User(与 BigQuery User 不同)
有关 BigQuery 中角色的更多信息,请参阅Google Cloud Platform 的文档。
- 创建密钥。在您向服务账户分配角色后,点击创建密钥按钮,然后为密钥类型选择 JSON。JSON 文件将下载到您的计算机。
您只能下载密钥一次。如果您删除密钥,则需要创建另一个具有相同角色的服务账户。
设置
您可以随时编辑这些设置。只需记住保存您的更改。
显示名称
数据库在 Metabase 界面中的显示名称。
项目 ID
每个 BigQuery 数据集都有一个项目 ID。您可以通过Google Cloud Console 找到此 ID。如果您不确定在哪里找到项目 ID,请参阅 Google 关于获取数据集信息的文档。
输入项目 ID 时,请省略项目 ID 前缀。例如,如果您的 ID 是
project_name:project_id
,则仅输入project_id
。
服务账户 JSON 文件
JSON 文件包含您的 Metabase 应用程序访问 BigQuery 数据集所需的凭据,如您添加到服务账户的角色所定义。如果您需要添加其他角色,则必须创建另一个服务账户,下载 JSON 文件,然后将该文件上传到 Metabase。
数据集
您可以指定要同步和扫描的 BigQuery 数据集。选项包括
- 全部
- 仅限以下数据集…
- 除以下数据集外全部…
BigQuery 数据集类似于模式。请确保输入您的数据集名称(如
marketing
),而不是您的表名称 (marketing.campaigns
)。
假设您有三个数据集:foo、bar 和 baz。
要同步所有三个数据集,请选择仅限以下数据集…并输入
foo,bar,baz
要基于字符串匹配同步数据集,请使用 *
通配符
- 要同步 bar 和 baz,请选择仅限以下数据集…并输入字符串
b*
。 - 要仅同步 foo,请选择除以下数据集外全部…并输入字符串
b*
。
请注意,仅支持 *
通配符;您不能使用其他特殊字符或正则表达式。
使用 Java 虚拟机 (JVM) 时区
我们建议您保持关闭此选项,除非您在对此数据的许多或大多数查询中进行手动时区转换。
在查询中包含用户 ID 和查询哈希
这对于审计和调试可能很有用,但会阻止 BigQuery 缓存结果,并可能增加您的成本。
重新运行简单探索的查询
如果人们希望在应用任何汇总或筛选器选择之前点击运行(播放按钮),请将此选项设置为关闭。
默认情况下,当您从汇总菜单中选择分组选项或从钻取菜单中选择筛选器条件时,Metabase 将立即执行查询。如果您的数据库速度较慢,您可能希望禁用重新运行,以避免每次点击都加载数据。
选择 Metabase 同步和扫描的时间
将此选项设置为开启以管理 Metabase 用于与数据库保持同步的查询。有关更多信息,请参阅同步和扫描数据库。
数据库同步
如果您选择了选择同步和扫描发生的时间 > 开启,您将能够设置
- 同步的频率:每小时(默认)或每天。
- 运行同步的时间,以运行 Metabase 应用的服务器的时区为准。
扫描筛选器值
Metabase 可以扫描此数据库中每个字段中存在的值,以在仪表盘和问题中启用复选框筛选器。这可能是一个资源密集型过程,尤其是在您拥有非常大的数据库的情况下。
如果您选择了选择同步和扫描发生的时间 > 开启,您将在扫描筛选器值下看到以下选项
- 定期按计划允许您以与数据库更改速率匹配的频率运行扫描查询。时间以运行 Metabase 应用的服务器的时区为准。对于小型数据库或具有经常更新的不同值的表,这是最佳选择。
- 如果您希望按需运行扫描查询,仅在添加新的筛选器小组件时是一个不错的选择。将此选项设置为开启意味着 Metabase 仅在向仪表盘或 SQL 问题添加新筛选器时,扫描和缓存所用字段的值。
- 永不,如果需要,我将手动执行此操作是适用于数据库过大或从未真正添加新值的数据库的选项。使用立即重新扫描字段值按钮运行手动扫描,并使您的筛选器值保持最新。
定期重新指纹识别表
定期重新指纹识别将增加数据库的负载。
将此选项设置为开启,以便在 Metabase 每次运行同步时扫描值样本。
指纹识别查询会检查每列的前 10,000 行,并使用该数据来估计每列有多少个唯一值、数字和时间戳列的最小值和最大值等。如果您将此选项设置为关闭,Metabase 将仅在设置期间对您的列进行一次指纹识别。
将 Metabase 连接到 Google 云端硬盘数据源
您可以通过 BigQuery 将 Metabase 连接到 Google 云端硬盘数据源。这涉及到一些设置,但基本上您要做的就是在 BigQuery 中创建一个数据集,并将一个外部表添加到该数据集,该表指向 Google 表格。这对于将 CSV 上传到 Google 表格,然后使用 Metabase 分析和可视化数据非常有用。
要连接到存储在 Google 云端硬盘中的数据源(如 Google 表格),首先请确保您已完成上述步骤,包括
- 在 Google Cloud Platform 中创建一个项目,
- 添加一个 BigQuery 数据集,以及
- 创建一个服务账户。
与服务账户共享您的 Google 云端硬盘源
在查看您的云端硬盘文件(例如,包含上传的 CSV 文件的 Google 表格)时,点击右上角的共享按钮。在标记为添加人员或群组的文本框中,粘贴您的服务账户的电子邮件,您可以在 Google Cloud Console 中的服务账户页面上找到该电子邮件。
该电子邮件地址将类似于 [email protected]
,其中相应地填写了您的服务账户和项目名称。
从下拉列表中选择 查看者,取消选中通知人员选项,然后点击共享。
在 BigQuery 中创建一个指向您的 Google 云端硬盘源的外部表
如果您还没有 BigQuery 数据集,请创建一个。
接下来,使用 Google Cloud Console,在您的 BigQuery 数据集中创建一个外部表,该表指向您的 Google 表格。
请务必指定正确的 Drive URI 和文件格式。
如果您尚未执行此操作,请将您的 Metabase 连接到您的 BigQuery。
完成这些步骤后,您将能够使用 Google 云端硬盘源作为数据在 Metabase 中提问和创建仪表盘。
使用旧版 SQL
从 0.30.0 版本开始,Metabase 告诉 BigQuery 将 SQL 查询解释为标准 SQL (GoogleSQL)。如果您更喜欢使用旧版 SQL,您可以通过在查询开头包含 #legacySQL
指令来告知 Metabase 这样做,例如
#legacySQL
SELECT *
FROM [my_dataset.my_table]
故障排除
如果您在 BigQuery 连接方面遇到问题,您可以查看此故障排除指南,其中涵盖了 BigQuery 问题,此指南涵盖了数据仓库连接,或访问 Metabase 的讨论论坛,看看是否有人遇到并解决了类似问题。
延伸阅读
阅读其他Metabase 版本的文档。