仅当变量在Metabase

时间:2018-10-31 08:04:37

标签: sql postgresql sql-view metabase

在Metabase中,可以在查询中使用{{variable}}添加变量,例如:

select *
from dashboard_demographic_view
where clinic_id = {{clinic}}

,其中dashboard_demographic_view是预先创建的视图。在上面的查询中,将返回clinic_id{{clinic}}中给出的内容匹配的行。

还是,我很好奇,如果仅当我给{{clinic}}赋值时才需要该过滤器,否则查询应该返回所有行。我已经提到过SQL add filter only if a variable is not null,但对我来说却无济于事。

select *
from dashboard_demographic_view
where ({{clinic}} is null or clinic_id = {{clinic}})

上面的查询给出无法替换'clinic':未指定参数。未指定clinic时发现:(“诊所”)

理论上,这可以通过使变量{{clinic}}成为字段过滤器来解决。但是,由于某些原因,视图(#8800 in metabase)无法做到。

我正在寻找解决方法,而不是制作一张真正的桌子来实现我的目的。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

可选条款会在这里帮助您吗?参见Metabase Documentation: Sql Parameters的结尾。

您的代码本质上将变成类似

select *
from dashboard_demographic_view
[[where clinic_id = {{clinic}})]]

(这个问题可能也已经提过,也许值得检查一下堆栈溢出中是否有重复项。)