Metabase变量和代码片段

本页内容

通过变量我们可以让我们的图标数据动起来,另外通过代码片段能让我们更好的协作维护图表。这属于Metabase比较好用的两个功能。会了以后大部分的图表你都能自己实现。


SQL代码片段

计算所有社交平台来的用户数

select count(1) from PEOPLE where SOURCE in ('Twitter','Facebook')

先选择 SOURCE in ('Twitter','Facebook') 然后选择右侧【SQL代码判断】,点击【+】【新建】即可得到下面的语句。


示例

select count(1) from PEOPLE where {{snippet: social_media_source}}

Metabase SQL Snippets.png

后面我们可以把模板:Snippet: social media source写到其他地方,当我们新增加其他来源的时候只用去修改代码片段,不用每个地方都修改。

变量[1]

原生查询中的变量允许使用筛选器或URL参数来动态替换查询中的值。

Metabase variables.png

创建变量

{{variable_name}} 在此查询模板中创建一个名为variable_name的变量。可以在侧边栏中为变量指定类型,从而更改其行为。除“字段筛选器”以外的所有变量类型都将自动导致将筛选器小部件放置在此问题上;对于字段筛选器,这是可选的。填写此筛选器小部件后,该值将替换查询模板中的变量。

举例:

示例

SELECT count(*)
FROM products
WHERE category = {{category}}

字段筛选器

通过为变量指定“字段筛选器”类型,您可以将问题链接到仪表板筛选器小部件,或在SQL问题上使用更多类型的过滤器小部件。在现有列上添加筛选器时,“字段筛选器”变量将插入与GUI查询构建器生成的SQL相似的SQL。

在添加字段筛选变量时,你需要将其映射到一个特定的字段。然后你可以选择在你的问题上显示一个过滤器部件,但即使你不这样做,你现在也可以在把这个问题添加到仪表板上时把你的字段过滤器变量映射到仪表板筛选器上。字段筛选器应该在 "WHERE "子句中使用。

举例:

示例

SELECT count(*)
FROM products
WHERE {{created_at}}

可选子句

[[{{variable}}]]周围的括号在模板中创建可选子句。 如果设置了“variable”,则将整个子句放入模板中。 如果不是,则忽略整个子句。

举例:

示例

SELECT count(*)
FROM products
[[WHERE category = {{category}}]]

要使用多个可选子句,你可以包含至少一个非可选WHERE子句,接着以“AND”开头的可选子句。

举例:

示例

SELECT count(*)
FROM products
WHERE 1=1
  [[AND id = {{id}}]]
  [[AND category = {{category}}]]

当使用字段筛选器时,列名不应该包括在SQL里。替代的方式是变量应被映射到侧边栏中的一个字段。

举例:

示例

SELECT count(*)
FROM products
WHERE 1=1
  [[AND {{category}}]]
此页面最后编辑于2022年9月22日 (星期四) 10:18。