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 & 管理 部分,然后选择服务账户。控制台将列出现有服务账户(如果有)。在屏幕顶部,点击 + 创建服务账户。
-
填写服务账户详情。为服务账户命名,并添加描述(添加名称后,服务账户 ID 将自动填充)。然后点击创建按钮。
-
授予服务账户对此项目的访问权限。您需要为服务账户添加角色,以便 Metabase 拥有查看数据集并对其运行查询的权限。请确保为服务账户添加以下角色:
- BigQuery 数据查看者
- BigQuery 元数据查看者
- BigQuery 作业用户(与 BigQuery 用户不同)
有关 BigQuery 中角色的更多信息,请参阅Google Cloud Platform 文档。
- 创建密钥。为服务账户分配角色后,点击创建密钥按钮,并为密钥类型选择 JSON。JSON 文件将下载到您的计算机。
您只能下载密钥一次。如果您删除密钥,则需要创建具有相同角色的另一个服务账户。
连接和同步
连接到数据库后,您将看到“连接和同步”部分,其中显示当前连接状态和管理数据库连接的选项。
在此处,您可以同步数据库架构并重新扫描字段值,并编辑连接详情。
编辑连接详情
您可以随时编辑这些设置。只需记住保存您的更改。
连接字符串
在此处粘贴连接字符串以预填充以下剩余字段。
显示名称
Metabase 界面中数据库的显示名称。
项目 ID
每个 BigQuery 数据集都将有一个项目 ID。您可以通过 Google Cloud 控制台找到此 ID。如果您不确定在哪里找到项目 ID,请参阅 Google 关于获取数据集信息的文档。
输入项目 ID时,请省略项目 ID 前缀。例如,如果您的 ID 是
project_name:project_id
,则只输入project_id
。
服务账户 JSON 文件
JSON 文件包含您的 Metabase 应用程序访问 BigQuery 数据集所需的凭据,这些凭据由您添加到服务账户的角色定义。如果您需要添加额外的角色,您必须创建另一个服务账户,下载 JSON 文件,并将该文件上传到 Metabase。
数据集
您可以指定要同步和扫描哪些 BigQuery 数据集。选项包括:
- 所有
- 仅限这些…
- 除了这些…
BigQuery 数据集类似于 schema。请确保输入您的数据集名称(如
marketing
),而不是您的表名称(marketing.campaigns
)。
假设您有三个数据集:foo、bar 和 baz。
要同步所有三个数据集,请选择仅限这些… 并输入
foo,bar,baz
要根据字符串匹配同步数据集,请使用 *
通配符
- 要同步 bar 和 baz,请选择仅限这些…并输入字符串
b*
。 - 要仅同步 foo,请选择除了这些…并输入字符串
b*
。
请注意,只支持 *
通配符;您不能使用其他特殊字符或正则表达式。
使用 Java 虚拟机 (JVM) 时区
除非您在该数据的许多或大多数查询中进行手动时区转换,否则我们建议您关闭此功能。
在查询中包含用户 ID 和查询哈希
这对于审计和调试可能很有用,但会阻止 BigQuery 缓存结果并可能增加您的成本。
备用主机名
如果您想使用不同的主机名连接到 BigQuery。格式:https://<hostname>:<port>
。如果您使用代理服务连接到 BigQuery(例如,匿名化 PII 的隐私代理),则应将此字段配置为代理主机名或 IP。请记住设置包含协议和端口号的完整 URI。
重新运行简单探索的查询
如果用户希望在应用任何汇总或筛选选择之前单击运行(播放按钮),请将此选项关闭。
默认情况下,Metabase 会在您从汇总菜单中选择分组选项或从钻取菜单中选择过滤条件后立即执行查询。如果您的数据库速度较慢,您可能需要禁用重新运行以避免每次点击都加载数据。
选择同步和扫描发生的时间
请参阅同步和扫描。
定期重新指纹识别表
定期重新指纹识别将增加数据库的负载。
将此选项打开,以便在 Metabase 每次运行同步时扫描值的样本。
指纹查询检查每列的前 10,000 行,并使用该数据估算每列的唯一值数量、数字和时间戳列的最小值和最大值等。如果将此选项设置为关闭,Metabase 只会在设置期间对您的列进行一次指纹识别。
将 Metabase 连接到 Google Drive 数据源
您可以通过 BigQuery 将 Metabase 连接到 Google Drive 数据源。这需要一些设置,但基本上您将做的是在 BigQuery 中创建一个数据集,并向该数据集添加一个指向 Google Sheet 的外部表。这对于将 CSV 上传到 Google Sheet,然后使用 Metabase 分析和可视化数据非常有用。
要连接到存储在 Google Drive 中的数据源(如 Google Sheet),请首先确保您已完成上述步骤,包括
- 在 Google Cloud Platform 中创建项目,
- 添加 BigQuery 数据集,以及
- 创建服务账户。
与服务账户共享您的 Google Drive 源
在查看您的 Drive 文件(例如,包含上传的 CSV 文件的 Google Sheet)时,点击右上角的共享按钮。在标有添加人员或群组的文本框中,粘贴您的服务账户的电子邮件地址,您可以在 Google Cloud 控制台的服务账户页面上找到该电子邮件地址。
该电子邮件地址看起来类似于 service-account-name@your-project-name.iam.gserviceaccount.com
,其中包含相应的服务账户和项目名称。
从下拉菜单中选择查看者,取消选中通知人员选项,然后点击共享。
在 BigQuery 中创建指向您的 Google Drive 源的外部表
如果您还没有 BigQuery 数据集,请创建一个。
接下来,使用 Google Cloud 控制台,在您的 BigQuery 数据集中创建一个外部表,该表指向您的 Google Sheet。
请务必指定正确的 Drive 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 的讨论论坛,看看是否有人遇到并解决了类似问题。
模型功能
BigQuery 尚不支持任何模型功能。
数据库路由
通过数据库路由,管理员可以使用一个数据库构建一次问题,然后根据查看问题的用户,该问题将在具有相同数据结构(schema)的不同数据库上运行查询。
BigQuery 的数据库路由在具有相同模式的 BigQuery 项目之间工作。
请参阅 数据库路由。
危险区
请参阅危险区域。
延伸阅读
阅读其他版本的 Metabase 的文档。