参数
什么是参数?
参数是一种特殊的变量类型,用于指定查询的输入。
设置参数允许最终用户输入一个值(如在仪表板或报告中),以更改该查询返回的数据,通常通过度量或维度进行筛选。参数将该值传递给正在运行的查询,并且该查询的结果将取决于人员输入的任何值。
参数 vs. 变量 vs. 实参
您可能会看到“参数”与“变量”或“实参”互换使用,因此有必要在此处指出一些区别。参数是一种变量类型;它只是特定输入值被传递到正在运行的程序或查询中的一种。但是,并非所有变量都是参数——您可能还会有在程序或查询中设置的变量,并且任何人都无法在另一侧修改它们。
实参是指程序或查询运行时传递的值本身。例如,如果您将参数设置为 {{productID}}
,并输入值 34
,则您的实参为 34。参数定义将存在输入值,但输入值本身是实参。
因此,是的,从技术上讲,这些术语都有所不同,但是可以互换使用它们,只要您通常指的是传递值以便您可以筛选结果的位置或容器即可。
Metabase 中的参数
在 Metabase 中,您可以使用筛选器小组件或通过 URL 设置参数。参数在 Metabase 中以几种不同的方式发挥作用
SQL 模板
通过向 Metabase 中的 SQL 查询添加参数,您可以创建 SQL 模板,这些模板会将筛选器小组件添加到这些查询中,从而允许人们在运行该查询时轻松更改该参数的值。
如果我们想在使用 示例数据库的 People
表上创建一个 SQL 模板来计算每个州/省的客户数量,我们将使用
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 问题和仪表板时,您可以设置参数来自定义不同用户在查看这些嵌入时看到的内容。