什么是参数?
一个 **参数** 是一种特殊类型的变量,用于指定查询的输入。
设置参数允许终端用户输入一个值(例如在仪表板或报告中),以改变该查询返回的数据,通常通过度量或维度进行筛选。参数会将该值传递给正在运行的查询,而查询结果将取决于该用户输入的值。
参数 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,从而设置一个自定义目标,将人们导向另一个仪表板或外部站点,其中该 ID 作为 URL 的一部分。
也许您有一个仪表板,其中包含跟踪库存中不同产品销售情况的问题,以及一个允许人们输入他们想查看的产品信息的仪表板筛选器。您可以通过将该产品的 ID 传递到自定义目标,使用该 ID 值参数化一个 URL,并将人们发送到该产品在您网站上的页面。当您访问该网站时,其 URL 可能看起来像这样:
https://www.your-website.com/products/id?productID=34
在这种情况下,URL 中的productID=34
就是您的参数。
嵌入
当在您的应用程序中嵌入 Metabase 问题和仪表板时,您可以设置参数来自定义不同用户在查看这些嵌入内容时看到的内容。