代码片段、已保存问题和视图的比较

了解如何使用 Metabase 功能来组织 SQL 代码。

本文概述了 Metabase 提供的用于组织 SQL 代码的工具,并提供了何时选择哪种工具的指导。

有两种主要的工具可以组织您的 SQL 代码:代码片段和已保存问题。我们还将讨论数据库视图,以区分它们与 Metabase 中已保存问题的用法,尽管视图特定于您的数据库(即它们不是 Metabase 的一部分)。

代码片段和已保存问题都可以作为模板注入到其他 SQL 问题中。至于何时使用哪种,经验法则是:对于小型的、常用的 SQL 片段,使用代码片段;对于任何您希望独立执行的代码,使用已保存的 SQL 问题。

代码片段和文件夹

使用代码片段来处理关键或常用 SQL 代码。代码片段应是简短、可重用的 SQL 行。

Example snippet using the Sample Database included with Metabase.

正如您可以使用**查询构建器**将官方聚合和筛选器定义为指标和分段一样,您也可以使用代码片段来规范 KPI 和筛选器。例如,您可能希望精确存储如何计算收入,或者什么构成活跃用户。将该 SQL 代码保存为代码片段,添加描述(您甚至可以包含联系方式,以防有人提问),您的团队中的每个人现在都可以引用您代码片段中明确的 SQL。

SELECT *
FROM users
WHERE {{ snippet: Active Users }} AND {{ snippet: Adults }}

代码片段对于整合和标准化代码至关重要。如果在任何时候您需要修改活跃用户的定义,您只需要更新 Active Users 代码片段,此更改将传播到所有使用该代码片段的问题。

Metabase 企业版还允许您将代码片段组织到文件夹中,就像集合组织问题和仪表板一样。您可以在这些文件夹上设置权限,以限制对敏感 SQL 的访问,或者只是为了确保用户不必筛选与其领域无关的文件夹。

Creating a snippet folder in Metabase Enterprise Edition.

如果您发现自己正在编写一个很长的代码片段,并且该代码片段返回一组结果(即,该代码片段不仅仅是一个 WHERE 子句——它本身就是一个查询),请考虑将该查询保存为一个问题,供其他人引用。

已保存问题作为构建块

对于本身就很有趣的大块 SQL 代码,请考虑将其保存为问题。毕竟,这正是大多数人使用 Metabase 的方式:他们提出问题。

问题可以组合到仪表板中,但它们也可以用作构建块,用于构建更大的查询,就像您可以在一个查询中组合多个代码片段一样。

假设您编写了一个查询并将其保存为一个问题。您可以像这样将其注入到另一个查询中

SELECT *
FROM {{#123}}

其中 123 是问题的 ID。您还可以将问题用作公共表表达式 (CTE)

WITH active_users AS {{#123}}
SELECT *
FROM Active Users

已保存问题是一种低成本的模块化分析方式。通过已保存问题(而不是代码片段)模块化查询的最大优势在于,您可以独立运行已保存问题并查看其结果,这使得问题比代码片段更容易调试。

或者,您可以简单地复制一个问题并从上一个问题开始构建,但这种复制是有代价的。您现在在两个问题中拥有相同的代码;如果您后来在一个问题中发现错误,您还必须在另一个问题中纠正错误——假设您记得它们共享相同的代码。通过简单地引用已保存问题,您只需在一个地方更新代码。

例如,如果您是一家初创公司,您的用户数据很可能分散在规范化表中。在 Metabase 中,您可以以各种方式连接这些表,以创建一组用户会感兴趣的问题,这允许他们基于这些结果构建,在自己的查询中引用这些问题,以特定方式切分数据。

数据库视图

如果您认为已保存的问题与数据库中的视图非常相似,那么您是对的。问题的优点是您不需要成为管理员即可创建它们,并且您可以即时创建问题并将其嵌套在其他问题中。缺点是问题是 Metabase 的一个构造,您不会获得数据库原生视图的性能优化(如果有的话)。此外,当在 SQL 代码中引用另一个问题时,请记住您只能访问问题的结果:您无法访问查询本身,这意味着您无法引用其中可能存在的任何变量。

如果您发现人们经常将 Metabase 中的问题作为其查询的基础,请考虑与您的数据库管理员讨论创建物化视图,该视图返回与已保存问题相同的结果集。物化视图的优点是数据库不必每次都重新计算结果;物化视图的行为将非常类似于数据库中的实际表。

在 SQL 模板中使用其他已保存问题非常适合您无法访问在数据库中创建视图,或者您只是在探索数据并且不想创建视图的情况。

随着您的成长,将业务逻辑进一步推向管道

大部分分析只是以不同的方式切分数据,以更好地感受它能讲述的故事。当您找到分析立足点时,您不一定会知道哪些数据切片将帮助您为公司做出最佳决策。

随着您组织的分析设置日趋成熟,您将希望将业务逻辑进一步推向管道,以便人们在 Metabase 中找到的表将您的业务逻辑单元分组在一起。策划和构建核心已保存问题集是理清哪些数据对您的组织最重要的简单方法。

总的来说,人们分析数据越容易,您的组织效率就越高。要了解更多信息,请参阅初创公司常犯的常见数据模型错误

这有帮助吗?

感谢您的反馈!
分析师每周技巧
获取可行的见解
关于 AI 和数据的资讯,直接发送到您的收件箱
© . This site is unofficial and not affiliated with Metabase, Inc.