Google BigQuery
要添加数据库连接,请单击右上角的齿轮图标,然后转到“管理设置”>“数据库”>“添加数据库”。
先决条件
您需要一个Google Cloud Platform账户,并有一个您希望在Metabase中使用的项目。有关如何创建和管理项目的信息,请参阅Google Cloud Platform文档。此项目应包含Metabase要连接的BigQuery数据集。
Google Cloud Platform:创建服务帐户和JSON文件
首先,您需要创建一个服务账户 JSON 文件,供 Metabase 使用以访问您的 BigQuery 数据集。服务账户旨在为非人类用户(如 Metabase 这样的应用程序)进行身份验证(我是谁?)和授权(我能做什么?)API 调用。
要创建服务账户 JSON 文件,请按照 Google 的文档在设置服务账户以用于您的 BigQuery 数据集。以下是基本流程:
-
创建服务账户。从您的 Google Cloud Platform 项目控制台,打开左侧的主侧边菜单,转到 IAM & Admin 部分,并选择 服务账户。控制台将列出现有的服务账户(如果有)。在屏幕顶部,点击 + 创建服务账户。
-
填写服务账户详细信息。为服务账户命名,并添加描述(一旦添加名称,服务账户 ID 将自动填充)。然后点击 创建 按钮。
-
授予服务账户对此项目的访问权限。您需要向服务账户添加 角色,以便 Metabase 有权查看和运行针对您的数据集的查询。确保您添加以下角色到服务账户:
- BigQuery 数据查看者
- BigQuery 元数据查看者
- BigQuery 作业用户(与 BigQuery 用户不同)
有关 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 Drive数据源
您可以通过BigQuery将Metabase连接到Google Drive数据源。这需要一些设置,但基本上,您需要做的是在BigQuery中创建一个数据集,并向该数据集添加一个指向Google表格的外部表。这对于将CSV上传到Google表格,然后使用Metabase分析和可视化数据非常有用。
要连接存储在Google Drive中的数据源(如Google表格),首先请确保您已完成了上述步骤,包括
- 在Google Cloud Platform中创建一个项目,
- 添加一个BigQuery数据集,以及
- 创建一个服务帐户。
将Google Drive源共享给服务帐户
在查看您的驱动器文件时(例如,上传了CSV文件的Google表格),点击右上角的共享按钮。在标有添加人员或组的文本框中,粘贴您的服务帐户的电子邮件地址,您可以在Google Cloud Console的服务帐户页面中找到。
该电子邮件地址看起来像这样:[email protected]
,您的服务帐户和项目名称相应地填写。
从下拉菜单中选择查看者,取消选中通知人员选项,然后点击共享。
在BigQuery中创建一个指向您的Google Drive源的外部表
如果您还没有BigQuery数据集,创建一个。
接下来,使用Google Cloud Console,在您的BigQuery数据集中创建一个外部表,该表指向您的Google表格。
务必指定正确的驱动器URI和文件格式。
如果您还没有,将您的Metabase连接到BigQuery。
完成这些步骤后,您将能够使用Google Drive源作为数据,在Metabase中提出问题和创建仪表板。
使用传统SQL
从版本0.30.0开始,Metabase告诉BigQuery将SQL查询解释为标准SQL (GoogleSQL)。如果您希望使用传统SQL,您可以在查询开头包含一个#legacySQL
指令来告诉Metabase这样做,例如
#legacySQL
SELECT *
FROM [my_dataset.my_table]
故障排除
如果您在BigQuery连接方面遇到问题,您可以查看这个故障排除指南,它涵盖了BigQuery问题,这个指南涉及数据仓库连接,或者访问Metabase的讨论论坛,看看是否有人遇到并解决了类似的问题。
进一步阅读
阅读其他Metabase版本的文档。