У меня есть следующий запрос в Grafana, который поддерживается MySql DataSource.
SELECT
$__timeGroupAlias(ts,$__interval),
sum(total) AS "total"
FROM hp
WHERE
$__timeFilter(ts)
AND customer_type IN ($CustomerType) AND age IN ($age) AND gender IN ($gender)
GROUP BY 1
ORDER BY $__timeGroup(ts,$__interval)
В Dashboard есть несколько singleStat / panel / graphs, которые используют разные параметры выбора, но условие WHERE остается одинаковым во всехих.
Я хочу сохранить условие как отдельную постоянную переменную, чтобы я мог добавить только эту переменную в каждом запросе.
Я пытался построить свой запрос следующим образом.
SELECT
$__timeGroupAlias(ts,$__interval),
sum(total) AS "total"
FROM hp
$where_condition
GROUP BY 1
ORDER BY $__timeGroup(ts,$__interval)
и объявил where_condition
как WHERE $__timeFilter(ts) AND customer_type IN ($CustomerType) AND age IN ($age) AND gender IN ($gender)
.
Но запрос не выполняется, поскольку внутренние переменные ($ CustomerType, $ age, $ пол) не разрешаются генератором запросов, и сгенерированный запрос выглядит следующим образом.
SELECT
UNIX_TIMESTAMP(ts) DIV 900 * 900 AS "time",
sum(total) AS "total"
FROM hp
ts BETWEEN FROM_UNIXTIME(1548311714) AND FROM_UNIXTIME(1548398114)
AND customer_type IN ($CustomerType) AND age IN ($age) AND gender IN ($gender)
GROUP BY 1
ORDER BY UNIX_TIMESTAMP(ts) DIV 900 * 900
Есть лиспособ разрешения переменных, которые содержатся в других переменных.Или есть ли другой способ вывести часть запроса, содержащую переменные?