Добавить фильтр, только если переменная задана со значениями в метабазе - PullRequest
0 голосов
/ 31 октября 2018

В метабазе можно добавлять переменные с {{variable}} в запросах, например:

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

, где dashboard_demographic_view - вид, созданный заранее. В приведенном выше запросе будут возвращены строки, в которых clinic_id соответствует тому, что указано в {{clinic}}.

Тем не менее, мне любопытно, что если мне нужен этот фильтр только тогда, когда я даю {{clinic}} значение, иначе запрос должен вернуть все строки. Я упоминал фильтр добавления SQL, только если переменная не равна нулю , но в моем случае это не помогает.

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

Приведенный выше запрос дает Невозможно заменить «клинику»: параметр не указан. Найдено: ("клиника") когда я не уточняю clinic.

Теоретически это можно решить, сделав переменную {{clinic}} полевым фильтром. Однако по некоторым причинам это невозможно сделать для представления ( # 8800 в метабазе ).

Я ищу обходные пути, отличные от создания реальной таблицы для достижения моих целей. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 31 октября 2018

Не помогут ли вам дополнительные пункты? См. Конец Документация метабазы: Sql Parameters .

Ваш код по сути стал бы чем-то вроде

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

(Возможно, этот вопрос уже задавался ранее - возможно, стоит проверить, есть ли дубликаты в переполнении стека.)

...