我在grafana中有以下查询,它由mysql数据源支持。
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)
仪表板中有多个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、$gender)没有被查询生成器解析,生成的查询如下所示。
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
是否有方法解析包含在其他变量中的变量?或者有没有其他方法来外部化包含变量的查询部分?