片段 vs. 已保存的问题 vs. 视图

了解 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 }}

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

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 中找到的表将您的业务逻辑单元分组在一起。策划和构建一组核心已保存问题是一种简单的方法,可以理清哪些数据对您的组织最重要。

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

下一篇:使用 SQL 问题向仪表板添加筛选器

如何向仪表板添加筛选器小部件并将其连接到 SQL 问题中的字段筛选器变量。

下一篇文章
© . All rights reserved.