代码片段:重用和共享代码

了解有关在原生代码中使用代码片段所需的一切。

代码片段允许您将 SQL 代码保存为代码片段,然后您或其他 SQL 作者可以在不同的 SQL 查询中引用该代码片段。如果您需要更新该代码,可以编辑代码片段,这些更改将传播到所有使用该代码片段的查询。任何对至少一个数据库拥有 SQL 编辑器权限的人都可以使用、创建和编辑代码片段。

Highlight SQL code and save it as a snippet.

代码片段是一个简单但强大的功能,所以让我们来深入了解一下。我们还将介绍 Metabase Pro 和企业版计划独有的功能:代码片段文件夹。这些文件夹及其权限可帮助您保持代码片段井然有序,例如按数据库或按代码片段类型分类,并允许您授予或拒绝访问特定文件夹或子文件夹。

首先,一个简单的代码片段示例

以这个简短的联接语句为例

orders AS o
LEFT JOIN products AS p
ON o.product_id = p.id

您可以突出显示该代码,将代码片段命名为 Orders and products,添加有用的描述,然后使用 snippet: 标签在任何 SQL 查询中调用该代码片段,如下所示

SELECT
    *
FROM
    {{snippet: Orders and products}}

您还可以使用代码片段来表示常见的指标,例如考虑到数据库特性而计算的平均订单总额。作为一个简单的例子,假设我们知道 ID 为 1 的帐户是一个测试帐户,我们不希望该数据扭曲我们的平均值。我们可以将该例外封装在一个名为 average order total 的代码片段中。

(SELECT
    AVG(total)
    FROM
    orders
    WHERE
    id > 1)

然后我们可以在另一个查询中使用该代码片段,查找订单中总额低于平均订单总额的产品

SELECT
    product_id
FROM
    orders
WHERE
    total < {{snippet: average order total}}

创建和使用代码片段就是这么简单。现在让我们深入了解它们为什么如此有用。

为什么要使用代码片段?

代码片段有三个主要用例

  • 标准化:您的组织如何定义热门产品?是通过销售单位数量?还是通过平均评分大于 4 的评论?您可以定义热门产品的这些条件,并将它们编码在一个代码片段中,{{snippet: popular products}},并让该代码填充到使用该代码片段的每个问题中。如果未来需要更改此定义,只需更新代码片段的 SQL,更改将传播到所有使用该代码片段的问题。类似于 区段(命名筛选器或筛选器集)和 指标(命名计算)可以标准化您组织中的分析,代码片段提供了另一种确保团队之间正确性和一致性的方式。
  • 效率:您是否经常复制粘贴 SQL 代码?不想费心记住哪个外键映射到哪个表?编写一次复杂的联接,将其保存为代码片段,并根据需要调用该代码片段。
  • 教育:代码片段可以通过向新 SQL 用户(甚至是经验丰富的分析师)展示您组织的“规范 SQL”,或更高效或更复杂的查询来提升他们的水平。阅读、复制和基于高质量代码进行构建是培养技能的最佳方式之一。它还可以节省您组织的时间:人们可以复制代码片段的代码,对其进行修改以获得不同的结果,并将该代码保存为新的代码片段供他人使用。

使用代码片段

代码片段侧边栏

Metabase 的 SQL 编辑器 有一个用于查看、创建和编辑代码片段的代码片段侧边栏,您可以通过将鼠标悬停在编辑器的右侧并单击代码片段图标(三条不均匀的水平线)来访问它。

Access the Snippets sidebar by clicking on the snippet icon to the right of the SQL editor.

创建代码片段后,您可以使用代码片段标签 {{snippet: Orders and products}} 将它们插入到编辑器中,或从代码片段侧边栏中选择它们

Previewing and inserting a snippet from the Snippets sidebar.

单击代码片段侧边栏中代码片段的名称会将其插入到查询中光标的当前位置。

编辑代码片段

更新代码片段的 SQL 代码将更新使用该代码片段的每个查询,因此请务必在保存代码之前对其进行测试,以避免破坏人们的查询。当然,如果您犯了错误并造成了混乱,您只需更正代码,再次保存代码片段,即可恢复宇宙的秩序。

代码片段和别名

请注意,如果您在代码片段使用别名(例如,orders AS o),则需要在代码片段外部使用这些别名来在查询中引用该数据。我们建议您的团队制定一项别名策略:要么所有人在代码中使用表别名,要么所有人使用完整的表名。如有疑问,只需使用完整的表名。

归档代码片段

You can archive a snippet via the Snippet Edit modal.

代码片段是不可破坏的:您无法删除它们,但可以归档(和取消归档)它们。归档代码片段将使您的代码片段侧边栏保持整洁,因为已归档的代码片段不会填充侧边栏。它还将防止已归档的代码片段出现在 SQL 编辑器中的预输入结果中,即当您键入 {{snippet: 时,已归档的代码片段不会显示为自动完成选项。归档代码片段不会影响使用该代码片段的查询,因此您可以安全地归档代码片段而不会破坏任何人的查询。

代码片段文件夹

代码片段控件仅在 Metabase 专业版企业版计划中提供(包括自托管和 Metabase 云)。

Metabase 的专业版和企业版计划包括代码片段文件夹和权限,以帮助组织大量代码片段。管理员可以将代码片段添加到文件夹中,并将文件夹放置在文件夹中。所有代码片段都会出现在代码片段侧边栏中,包括那些用于其他数据库的代码片段(因为您可能会将可用于多个数据库的字符串代码片段化)。您可以将每个数据库的有用代码片段收集到其自己的文件夹中,还可以创建文件夹来存储与不同团队或项目相关的代码片段。

Saving a snippet to a folder.

此外,管理员可以为这些文件夹添加权限,以控制谁可以查看或编辑其中位于的代码片段

Changing a folder

权限授予每个文件夹的,共有三个权限级别

  • 编辑访问权限:查看、编辑、归档/取消归档代码片段。
  • 查看访问权限:查看和运行代码片段。
  • 无访问权限:无法在侧边栏和自动完成菜单中查看代码片段。但是,没有访问权限的人可以运行包含这些代码片段的查询。

归档和取消归档代码片段对权限没有影响,但您需要对文件夹具有编辑访问权限才能归档和取消归档其代码片段。

使用文件夹来保持代码片段在团队之间和内部的组织和标准化,以及仅将敏感代码片段显示给适当的组。

何时使用代码片段与保存的查询

代码片段可以有多大?一般来说,如果一个代码片段可以独立运行(即,您可以将其作为查询单独运行),请考虑将该 SQL 查询存储为保存的查询。将代码片段保留给依赖的代码片段。代码片段对于保存查询中常用的字符串也很有用。有关何时使用代码片段的更多信息,请查看代码片段 vs. 保存的查询 vs. 视图

更多代码片段使用信息

要了解有关代码片段的更多信息,请查看我们的详细文档

下一篇:代码片段 vs. 保存的查询 vs. 视图

了解可用于组织 SQL 代码的 Metabase 功能。

下一篇文章
© . All rights reserved.