什么是参数?
参数是一种特殊的变量,它指定了查询的输入。
设置参数允许最终用户输入一个值(例如在仪表板或报告中)来更改该查询返回的数据,通常通过度量或维度进行筛选。参数将该值传递给正在运行的查询,该查询的结果将取决于该用户输入的任何值。
参数 vs. 变量 vs. 实参
您可能会看到“参数”与“变量”或“实参”互换使用,因此有必要在此指出一些区别。参数是一种变量;它只是将一些特定输入值传递给正在运行的程序或查询的一种变量。然而,并非所有变量都是参数——您可能还有在程序或查询中设置且无法由另一方修改的变量。
实参指的是程序或查询运行时传递的实际值。例如,如果您将参数设置为{{productID}}
,并输入值34
,则您的实参是 34。参数定义了将存在一个输入值,但输入值本身是实参。
所以,是的,从技术上讲,这些术语有所不同,但互换使用它们是可以的,只要您普遍指的是一个用于传递值以过滤结果的占位符或容器。
Metabase 中的参数
在 Metabase 中,您可以使用筛选器小部件或通过 URL 设置参数。参数在 Metabase 中有几种不同的应用方式:
SQL 模板
通过向 Metabase 中的 SQL 查询添加参数,您可以创建SQL 模板,为这些查询添加筛选器小部件,允许人们在运行该查询时轻松更改该参数的值。
如果我们想在查询上创建一个 SQL 模板,该查询使用示例数据库的People
表计算每个州中的客户数量,我们将使用:
SELECT count(*)
FROM people
WHERE state = {{State}}
通过将{{State}}
用双花括号括起来,我们创建了一个参数,该参数为这个问题添加了一个筛选器小部件,允许人们输入他们想要的州,而无需更改查询本身的文本,如图 1 所示

仪表盘筛选器
仪表板筛选器允许您设置应用于仪表板的参数。例如,您可以创建一个仪表板筛选器,允许人们输入State
值,并将该筛选器链接到仪表板上问题或卡片中的State
列。然后,当人们输入他们想要的值(例如图 2 中所示的北卡罗来纳州)时,他们会看到这些卡片相应地发生变化。

当您在仪表板筛选器中输入值时,您会注意到 URL 会更改为包含该值。
自定义目标
您还可以将参数插入 URL 中,以指定人们单击仪表板中的图表时会发生什么。例如,您可以通过使用卡片结果中的值来构建一个 URL,该 URL 将人们引导到另一个仪表板或外部站点,并将该 ID 作为 URL 的一部分,从而设置自定义目标。
也许您有一个仪表板,其中包含跟踪库存中不同产品销售情况的问题,以及一个允许人们输入他们想要查看的产品仪表板筛选器。您可以更进一步,将该产品的 ID 传递到自定义目标,使用该 ID 值参数化 URL,并将人们发送到您网站上该产品的页面。当您访问该站点时,其 URL 可能看起来像这样:
https://www.your-website.com/products/id?productID=34
在这种情况下,URL 中的productID=34
就是您的参数。
嵌入
当将 Metabase 问题和仪表板嵌入到您的应用程序中时,您可以设置参数以自定义不同用户在查看这些嵌入内容时看到的内容。