Grafana Postgres 使用可具有多个值的 Where 查询时出错
Posted
技术标签:
【中文标题】Grafana Postgres 使用可具有多个值的 Where 查询时出错【英文标题】:Grafana Postgres Error When Using Where Query That Can Have Multiple Values 【发布时间】:2021-03-03 09:36:36 【问题描述】:我有一个从 PostgreSQL 数据库中提取的 Grafana 网站。在仪表板中,我正在尝试创建一个折线图,并在其中两列(项目和史诗)上设置了一个过滤器。过滤器适用于项目(可能是因为只有一个项目值,并且数据库中的所有行都设置了该值)。
但是当我尝试过滤“史诗”时,它只适用于单一选择。 “全部”选择给了我以下错误:
pq: syntax error at or near ","
下面是我尝试配置此过滤器的屏幕截图。
另请注意,史诗与变量相关联,下面是我如何设置该变量的屏幕截图
编辑
请求生成的 SQL
"request":
"url": "api/tsdb/query",
"method": "POST",
"data":
"from": "1577958613797",
"to": "1609224964157",
"queries": [
"refId": "A",
"intervalMs": 21600000,
"maxDataPoints": 1470,
"datasourceId": 4,
"rawSql": "SELECT\n \"timestamp\" AS \"time\",\n cycle_time AS \"cycle_time\"\nFROM issue_metrics\nWHERE\n $__timeFilter(\"timestamp\") AND\n project = 'LUSFPRO3' AND\n epic = 'LUSFPRO3-68','LUSFPRO3-2','LUSFPRO3-69'\nORDER BY 1",
"format": "time_series"
]
,
"hideFromInspector": false
,
"response":
"results":
"A":
"error": "pq: syntax error at or near \",\"",
"refId": "A",
"meta":
"executedQueryString": "SELECT\n \"timestamp\" AS \"time\",\n cycle_time AS \"cycle_time\"\nFROM issue_metrics\nWHERE\n \"timestamp\" BETWEEN '2020-01-02T09:50:13.797Z' AND '2020-12-29T06:56:04.157Z' AND\n project = 'LUSFPRO3' AND\n epic = 'LUSFPRO3-68','LUSFPRO3-2','LUSFPRO3-69'\nORDER BY 1"
,
"series": null,
"tables": null,
"dataframes": null
,
"message": "pq: syntax error at or near \",\""
【问题讨论】:
请出示Generated SQL
@JanGaraj 刚刚发布了有关生成 SQL 的更新。
【参考方案1】:
那个多值变量生成错误的 SQL 语法:
epic = 'LUSFPRO3-68','LUSFPRO3-2','LUSFPRO3-69'
GUI 编辑器仅适用于简单查询。切换到文本编辑模式并将查询中的epic
条件更新为:
epic IN ($Epic)
以便生成正确的 SQL 语法:
epic IN ('LUSFPRO3-68','LUSFPRO3-2','LUSFPRO3-69')
【讨论】:
这行得通,谢谢!无论如何让查询生成器使用“IN”语法而不是“=”,或者如果我想添加到这个,我是否从现在开始强制使用自定义 SQL 命令? 在 GUI 编辑器中单击=
,它应该提供所有可用选项。其实IN
也有。以上是关于Grafana Postgres 使用可具有多个值的 Where 查询时出错的主要内容,如果未能解决你的问题,请参考以下文章
Grafana 引用数据集变量以使用 Postgres 驱动程序转换图例值
使用 Activerecord、Rails 和 Postgres 查找具有多个重复字段的行
使用 PostgresQL 作为数据源在 Grafana 中进行一个查询的多个系列